Nothing 키워드 (Visual Basic)Nothing keyword (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.

참고

Nullable이 아닌 값 형식의 경우의 Nothing Visual Basic의 null 다릅니다 C#.For non-nullable value types, Nothing in Visual Basic differs from null in C#. Visual Basic nullable이 아닌 값 형식의 변수를 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#nullable이 아닌 값 형식의 변수를 null에 할당 하면 컴파일 타임 오류가 발생 합니다.In C#, if you assign a variable of a non-nullable value type to null, a compile-time error occurs.

주의Remarks

데이터 형식의 기본값을 나타내는 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. 값 형식에는 모든 숫자 데이터 형식, Boolean, Char, Date, 모든 구조 및 모든 열거형이 포함 됩니다.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 동작은 변수가 nullable 데이터 형식 인지에 따라 달라 집니다.If a variable is of a value type, the behavior of Nothing depends on whether the variable is of a nullable data type. Nullable 값 형식을 나타내려면 형식 이름에 ? 한정자를 추가 합니다.To represent a nullable value type, add a ? modifier to the type name. Nullable 변수에 Nothing를 할당 하면 값이 null로 설정 됩니다.Assigning Nothing to a nullable variable sets the value to null. 자세한 내용 및 예제는 Nullable 값 형식을 참조 하세요.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 null 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

참조 (또는 nullable 값 형식) 변수가 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가 on이 고 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은 초기화 되지 않은 variant 또는 존재 하지 않는 데이터베이스 열을 나타내는 DBNull 개체와 다릅니다.Nothing differs from the DBNull object, which represents an uninitialized variant or a nonexistent database column.

참고 항목See also