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)
0 件のコメント:
コメントを投稿