Nothing (Visual Basic)Nothing (Visual Basic)

任意のデータ型の既定値を表します。Represents the default value of any data type. 参照型の場合、既定値は、null参照。For reference types, the default value is the null reference. 値の型の場合、既定値は、値の型が null 許容かどうかに依存します。For value types, the default value depends on whether the value type is nullable.

注意

Null 非許容値型の場合は、 Nothing Visual Basic では異なりますnullでC#します。For non-nullable value types, Nothing in Visual Basic differs from null in C#. Null 非許容値型の変数を設定した場合、Visual Basic でNothing変数が宣言された型の既定値に設定されています。In Visual Basic, if you set a variable of a non-nullable value type to Nothing, the variable is set to the default value for its declared type. C#を null 非許容値型の変数を割り当てる場合は、 null、コンパイル時エラーが発生します。In C#, if you assign a variable of a non-nullable value type to null, a compile-time error occurs.

RemarksRemarks

Nothing データ型の既定値を表します。Nothing represents the default value of a data type. 既定値は、変数が、値の型または参照型によって異なります。The default value depends on whether the variable is of a value type or of a reference type.

変数を値の型直接その値が含まれています。A variable of a value type directly contains its value. 値の型は、すべての数値データ型を含めるBooleanCharDate、すべての構造、およびすべての列挙体。Value types include all numeric data types, Boolean, Char, Date, all structures, and all enumerations. 変数を参照型メモリ内オブジェクトのインスタンスへの参照を格納します。A variable of a reference type stores a reference to an instance of the object in memory. 参照型には、クラス、配列、デリゲート、および文字列が含まれます。Reference types include classes, arrays, delegates, and strings. 詳細については、「 Value Types and Reference Types」を参照してください。For more information, see Value Types and Reference Types.

変数は、値の場合は入力の動作Nothingかどうか、変数が null 許容のデータ型によって異なります。If a variable is of a value type, the behavior of Nothing depends on whether the variable is of a nullable data type. Null 許容値型を表す、追加、?修飾子を型名。To represent a nullable value type, add a ? modifier to the type name. 割り当てるNothingnull 許容型の変数に値を設定nullします。Assigning Nothing to a nullable variable sets the value to null. 詳細と例については、次を参照してください。 null 許容値型します。For more information and examples, see Nullable Value Types.

変数が null 許容型でない値型の場合は、割り当てるNothingに設定が既定値にその宣言された型。If a variable is of a value type that is not nullable, assigning Nothing to it sets it to the default value for its declared type. その型に変数のメンバーが含まれている場合はすべて既定値に設定します。If that type contains variable members, they are all set to their default values. 次の例は、スカラー型の場合、これを示しています。The following example illustrates this for scalar types.

Module Module1

    Sub Main()
        Dim ts As TestStruct
        Dim i As Integer
        Dim b As Boolean

        ' The following statement sets ts.Name to Nothing and ts.Number to 0.
        ts = Nothing

        ' The following statements set i to 0 and b to False.
        i = Nothing
        b = Nothing

        Console.WriteLine("ts.Name: " & ts.Name)
        Console.WriteLine("ts.Number: " & ts.Number)
        Console.WriteLine("i: " & i)
        Console.WriteLine("b: " & b)

        Console.ReadKey()
    End Sub

    Public Structure TestStruct
        Public Name As String
        Public Number As Integer
    End Structure
End Module

変数が参照型の場合は、割り当てるNothing変数設定、null変数の型の参照。If a variable is of a reference type, assigning Nothing to the variable sets it to a null reference of the variable's type. 設定されている変数、null参照は任意のオブジェクトに関連付けられていません。A variable that is set to a null reference is not associated with any object. 次に例を示します。The following example demonstrates this.

Module Module1

    Sub Main()

        Dim testObject As Object
        ' The following statement sets testObject so that it does not refer to
        ' any instance.
        testObject = Nothing

        Dim tc As New TestClass
        tc = Nothing
        ' The fields of tc cannot be accessed. The following statement causes 
        ' a NullReferenceException at run time. (Compare to the assignment of
        ' Nothing to structure ts in the previous example.)
        'Console.WriteLine(tc.Field1)

    End Sub

    Class TestClass
        Public Field1 As Integer
        ' . . .
    End Class
End Module

変数は参照 (または null 許容値の型) かどうかをチェックするときにnull、使用しない= Nothingまたは<> Nothingします。When checking whether a reference (or nullable value type) variable is null, do not use = Nothing or <> Nothing. 常に使用するIs NothingまたはIsNot Nothingします。Always use Is Nothing or IsNot Nothing.

Visual Basic で文字列の場合、空の文字列に等しいNothingします。For strings in Visual Basic, the empty string equals Nothing. そのため、"" = Nothingは true。Therefore, "" = Nothing is true.

次の例を使用する比較を示しています、IsIsNot演算子。The following example shows comparisons that use the Is and IsNot operators.

Module Module1
    Sub Main()

        Dim testObject As Object
        testObject = Nothing
        Console.WriteLine(testObject Is Nothing)
        ' Output: True

        Dim tc As New TestClass
        tc = Nothing
        Console.WriteLine(tc IsNot Nothing)
        ' Output: False

        ' Declare a nullable value type.
        Dim n? As Integer
        Console.WriteLine(n Is Nothing)
        ' Output: True

        n = 4
        Console.WriteLine(n Is Nothing)
        ' Output: False

        n = Nothing
        Console.WriteLine(n IsNot Nothing)
        ' Output: False

        Console.ReadKey()
    End Sub

    Class TestClass
        Public Field1 As Integer
        Private field2 As Boolean
    End Class
End Module

使用せずに変数を宣言する場合、As句に設定し、 Nothing、変数の型を持つObjectします。If you declare a variable without using an As clause and set it to Nothing, the variable has a type of Object. この例はDim something = Nothingします。An example of this is Dim something = Nothing. ここでは、コンパイル時エラーにときOption Strict上とOption Inferはオフです。A compile-time error occurs in this case when Option Strict is on and Option Infer is off.

割り当てるときNothingオブジェクト変数を参照しなく任意のオブジェクト インスタンス。When you assign Nothing to an object variable, it no longer refers to any object instance. 場合は、変数インスタンスを参照していた、設定Nothingインスタンス自体を終了しません。If the variable had previously referred to an instance, setting it to Nothing does not terminate the instance itself. インスタンスが終了し、ガベージ コレクター (GC) が残り、アクティブな参照がないことを検出した後にのみ関連付けられているメモリとシステム リソースを解放します。The instance is terminated, and the memory and system resources associated with it are released, only after the garbage collector (GC) detects that there are no active references remaining.

Nothing 異なります、DBNull初期化されていないバリアントをまたはデータベースが存在しない列を表すオブジェクト。Nothing differs from the DBNull object, which represents an uninitialized variant or a nonexistent database column.

関連項目See also