int x = null; // コンパイルエラー
一方、VB.NETではnull許容型でない構造体にNothingを代入すると、デフォルト値が代入されます。
Dim x As Integer = Nothing ' x = 0
Nothing的な値との比較は以下のようになります。
Public Shared Sub Main() Dim n As Integer = Nothing ' コンパイルエラー(VBNC30020) ' If n Is Nothing Then ' Console.WriteLine("n is Nothing") ' End If If n = Nothing Then Console.WriteLine("n equals Nothing") End If If IsNothing(n) Then Console.WriteLine("isNothing n") End If If n = 0 Then Console.WriteLine("n equals zero") End If End Sub ' 実行結果 ' n equals Nothing ' n equals zero
n = Nothingは使えるけど、IsNothing(n)常にFalseを返すので使えない。
仕様を理解していても混乱してしまうのでキライです。
null許容でない構造体の初期化にはNothingを使わないようにします。
参考
Nothing(Visual Basic)