【VB.NET】Nothing とはなにか

VB.NET
この記事は約3分で読めます。

【VB.NET】Nothing とはなにか

英語の訳としては、「何も…ない」 という意味です。

Nothing は、厳密に言えば文字列型の String の””(空文字)とは違いますが、価値的には同じです。

Nothing は、厳密に言えば値型の Integer の 0 とは違いますが、価値的には同じです。

どちらも無いです。

String型(参照型)とNothing

Nothing は、厳密に言えば文字列型の String の””(空文字)とは違いますが、価値的には同じです。

サンプルコード

Module Module1

    Sub Main()

        Dim str As String = ""

        Console.WriteLine(str.Equals(Nothing)) 'False
        Console.WriteLine(str Is Nothing) 'False
        Console.WriteLine(str = Nothing) 'True

    End Sub

End Module

 

Integr型(値型)とNothing

数字型(値型)の Integer の 0 と厳密に言えば違うものですが、価値的には同じです。

Module Module1

    Sub Main()

        Dim num As Integer

        Console.WriteLine(num.Equals(Nothing)) 'True
        'Console.WriteLine(num Is Nothing) '参照型または、Null許容型でない為 NG
        Console.WriteLine(num = Nothing) 'True

    End Sub

End Module

これは、値型に Nothing を 設定すると 暗黙的に 0 が設定されることからもわかるように値型の Nothingと 0 は同じ価値があります。

Dim num As Integer = Nothing
Console.WriteLine(num) '0

 

数値型に Nothing を許容したい場合は、型指定の際に “?” を付けると Nothing を入れられるようになります。

Module Module1

    Sub Main()

        Dim num As Integer? = Nothing

        Console.WriteLine(num.Equals(0)) 'False
        Console.WriteLine(num.Equals(Nothing)) 'True
        Console.WriteLine(num Is Nothing) 'True

        num = 0

        Console.WriteLine(num.Equals(0)) 'True
        Console.WriteLine(num.Equals(Nothing)) 'False
        Console.WriteLine(num Is Nothing) 'False

    End Sub

End Module

 

コメント

タイトルとURLをコピーしました