カテゴリ: VB.NET 更新日: 2026/01/28

VB.NETのNullable型を徹底解説!初心者でもわかる使い方と注意点

VB.NETでNullable型を使う方法と注意点
VB.NETでNullable型を使う方法と注意点

先生と生徒の会話形式で理解しよう

生徒

「先生、VB.NETで変数に何も入れない状態ってどうやって表すんですか?」

先生

「良い質問ですね。普通の変数は必ず値を持ちますが、VB.NETにはNullable型という仕組みがあって『値がない』という状態を表現できるんです。」

生徒

「えっ!じゃあ整数とか日付とかにも『値なし』ができるんですか?」

先生

「その通り。今日はNullable型の使い方と注意点を見ていきましょう。」

1. Nullable型とは?

1. Nullable型とは?
1. Nullable型とは?

VB.NETのNullable型とは、「通常は値を必ず持つデータ型」に「値が存在しない状態(Nothing)」を追加できる特別な型のことです。特にデータベースから値を取り出すときや、入力がまだ行われていないときなどに役立ちます。

例えば、数値型(Integer)は通常0や10などの数値を必ず入れる必要があります。しかし、現実のデータには「まだ入力されていない」や「不明」という状態があります。そんなときに使えるのがNullable型です。

Nullable型は?を使って簡単に宣言できます。

2. Nullable型の基本的な使い方

2. Nullable型の基本的な使い方
2. Nullable型の基本的な使い方

それでは具体的にコードで見てみましょう。


Dim age As Integer? ' Nullable型の整数
age = Nothing       ' 値がまだ存在しない
Console.WriteLine(age.HasValue) ' False

age = 25            ' 値を代入
Console.WriteLine(age.HasValue) ' True
Console.WriteLine(age.Value)    ' 25

HasValueプロパティを使うと、値が入っているかどうかを調べることができます。そして値を取り出すときはValueプロパティを使います。

3. NothingとNullable型の違い

3. NothingとNullable型の違い
3. NothingとNullable型の違い

VB.NETではNothingというキーワードがありますが、これは「参照型」や「Nullable型」で特別な意味を持ちます。

  • 普通の数値型:必ず値を持つ(Nothingを代入すると0になる)
  • Nullable型:Nothingを代入すると「値がない」という状態になる

つまり、普通の整数型IntegerにNothingを入れると「0」になりますが、Integer?にNothingを入れると「値なし」となり、HasValueでFalseになります。

4. Null合体演算子(If演算子)

4. Null合体演算子(If演算子)
4. Null合体演算子(If演算子)

Nullable型は便利ですが、値が入っていないとエラーになることがあります。そこで役立つのがNull合体演算子If演算子)です。これは「値があればその値を、なければ別の値を使う」という仕組みです。


Dim height As Integer? = Nothing
Dim displayHeight As Integer

' 値がなければデフォルトで170を使う
displayHeight = If(height, 170)

Console.WriteLine(displayHeight) ' 出力: 170

このように書くことで、値が存在しないときの安全な代替値を指定できます。

5. Nullable型を使うと便利な場面

5. Nullable型を使うと便利な場面
5. Nullable型を使うと便利な場面

Nullable型は実際にどのような場面で使われるのでしょうか?代表的な例を挙げてみましょう。

  • データベースの値がNULLの場合 ユーザーの年齢や身長が未入力の場合にそのまま扱える。
  • フォーム入力が任意のとき 数値の入力欄が空の場合に「値なし」として処理できる。
  • 計算で一時的に値が未確定のとき 途中でまだ決まっていない数値を表現するのに使える。

6. Nullable型の注意点

6. Nullable型の注意点
6. Nullable型の注意点

Nullable型は便利ですが、使うときにはいくつかの注意が必要です。

  • Valueを直接使うとエラーになることがある 値がない状態でValueを呼び出すと実行時エラーになります。
  • 演算に使うときは確認が必要 Nullのまま計算すると結果もNullになるため、事前にHasValueを確認するか、If演算子でデフォルト値を設定しましょう。
  • 参照型には不要 Stringなどの参照型はもともとNothingを持てるため、Nullable型にする必要はありません。

7. Nullable型を使ったサンプルプログラム

7. Nullable型を使ったサンプルプログラム
7. Nullable型を使ったサンプルプログラム

最後に、Nullable型を使った簡単なサンプルプログラムを紹介します。


Dim weight As Integer? = Nothing

If weight.HasValue Then
    Console.WriteLine("体重は " & weight.Value & " kg です")
Else
    Console.WriteLine("体重は未入力です")
End If

' Null合体演算子でデフォルト値を使う
Dim displayWeight As Integer = If(weight, 60)
Console.WriteLine("表示用体重: " & displayWeight & " kg")

体重は未入力です
表示用体重: 60 kg

このようにNullable型を使えば、現実の「値がまだ存在しない」状態をプログラムで自然に表現できます。

まとめ

まとめ
まとめ

Nullable型の考え方をしっかり振り返ろう

VB.NETのNullable型は、「必ず値を持つはずの型」に対して、「まだ決まっていない」「入力されていない」「不明である」といった現実的な状態を自然に表現できる仕組みです。 プログラミング初心者のうちは、変数には必ず何かの値が入っているものだと考えがちですが、実際の業務やアプリ開発では、値が存在しない状態を扱う場面がとても多くあります。 そのようなとき、Nullable型を使うことで、無理に0や空の日付を入れる必要がなくなり、プログラムの意味がはっきりします。

特に整数型や日付型のような値型では、通常はNothingを代入しても既定値に変換されてしまいます。 しかし、Integer? や Date? のようにNullable型を使えば、「値なし」という状態そのものを正しく保持できます。 これはデータベース連携や入力フォーム処理、業務システムの作成において非常に重要な考え方です。

HasValue・Value・If演算子の役割

Nullable型を安全に使うためには、HasValueとValueの役割を理解しておく必要があります。 HasValueは「値が入っているかどうか」を確認するためのプロパティで、Valueは実際の値を取り出すためのものです。 もし値が存在しない状態でValueを使ってしまうと、実行時エラーが発生します。 そのため、事前にHasValueで確認するか、Null合体演算子であるIf演算子を使って処理するのが基本となります。

If演算子を使えば、「値があればそれを使い、なければ指定した初期値を使う」という処理を一行で書けます。 これにより、コードが読みやすくなり、エラーの発生も防ぎやすくなります。 Nullable型とIf演算子は、必ずセットで覚えておきたい組み合わせです。

実務で役立つNullable型の使いどころ

Nullable型は学習用のサンプルだけでなく、実際の開発現場でも頻繁に使われます。 たとえば、ユーザー情報の年齢や身長、体重などは、必須項目でない場合も多く、未入力のまま保存されることがあります。 そのようなデータを扱う際にNullable型を使えば、「入力されていない」という事実をそのままプログラムで表現できます。

また、計算途中でまだ値が確定していない場合や、条件によって値が決まるような処理でもNullable型は便利です。 無理に仮の数値を入れずに済むため、後からコードを読み返したときにも意図が分かりやすくなります。 可読性と安全性の両方を高められる点が、Nullable型の大きな魅力です。

まとめとしてのサンプルコード

ここで、今回学んだ内容を整理した簡単なサンプルを見てみましょう。 Nullable型の確認、If演算子の利用、表示処理までを一通り含んだ例です。


Dim score As Integer? = Nothing

If score.HasValue Then
    Console.WriteLine("点数は " & score.Value & " 点です")
Else
    Console.WriteLine("点数は未入力です")
End If

Dim displayScore As Integer = If(score, 0)
Console.WriteLine("表示用点数: " & displayScore & " 点")

このように書いておけば、値がある場合もない場合も、プログラムが安全に動作します。 初心者のうちから、この書き方に慣れておくと、後々の学習がとても楽になります。

先生と生徒の振り返り会話

生徒

「Nullable型って、最初は難しそうに感じましたけど、 値がない状態をそのまま表せるって考えると分かりやすいですね。」

先生

「そうですね。無理に0を入れたりせず、現実の状態を正しく表現できるのがポイントです。」

生徒

「HasValueで確認してから使うとか、If演算子で初期値を決めるとか、 実務で使えそうな書き方がイメージできました。」

先生

「その感覚が大切です。Nullable型はデータベースやフォーム処理と相性が良いので、 今後いろいろな場面で活躍しますよ。」

生徒

「これからは、値がない可能性がある変数には、 まずNullable型を検討してみます。」

カテゴリの一覧へ
新着記事
New1
ASP.NET
ASP.NET Web APIとMVCの違いを完全解説!初心者でもわかるWebアプリとAPIの基本
New2
ASP.NET
ASP.NET開発環境構築|コマンドライン(dotnet CLI)でASP.NETプロジェクトを作成する方法
New3
VB.NET
VB.NETで文字列を綺麗に整える!String.Formatと文字列補間の使い方
New4
ASP.NET
LinuxでASP.NET Coreを動かす手順|初心者でもわかる開発環境構築ガイド
人気記事
No.1
Java&Spring記事人気No1
VB.NET
VB.NETのJoinメソッドを徹底解説!バラバラの文字列を一つに結合する方法
No.2
Java&Spring記事人気No2
VB.NET
VB.NETの配列(Array)の作り方と基本操作を徹底解説!初心者でもわかる入門ガイド
No.3
Java&Spring記事人気No3
VB.NET
VB.NETの文字列置換を完全解説!初心者でもわかるReplaceメソッドの使い方
No.4
Java&Spring記事人気No4
VB.NET
VB.NETで文字列結合を高速化!StringBuilderクラスの使い方を完全ガイド
No.5
Java&Spring記事人気No5
VB.NET
VB.NETのDictionaryを完全ガイド!初心者でもわかる辞書の基本と応用
No.6
Java&Spring記事人気No6
VB.NET
VB.NETのList(Of T)の使い方を完全ガイド!初心者が最初に覚えるべきリスト操作
No.7
Java&Spring記事人気No7
VB.NET
VB.NETでStaticメソッドを定義する方法と活用例
No.8
Java&Spring記事人気No8
VB.NET
VB.NETで正規表現をマスター!初心者でもわかる文字列検索・抽出の基本