Nothing anahtar sözcüğü (Visual Basic)

Herhangi bir veri türünün varsayılan değerini temsil eder. Başvuru türleri için varsayılan değer null başvurudur. Değer türleri için, varsayılan değer değer türünün null yapılabilir olup olmamasına bağlıdır.

Not

null yapılamayan değer türleri için Nothing Visual Basic içinde C# ' den farklıdır null . Visual Basic ' de, null olamayan bir değer türü değişkenini olarak ayarlarsanız Nothing , değişken, belirtilen türü için varsayılan değere ayarlanır. C# ' de, null olamayan değer türünde bir değişkeni öğesine atarsanız null , derleme zamanı hatası oluşur.

Açıklamalar

Nothing bir veri türünün varsayılan değerini temsil eder. Varsayılan değer, değişkenin bir değer türü veya bir başvuru türü olmasına bağlıdır.

Değer türünde bir değişken doğrudan değerini içerir. Değer türleri, tüm sayısal veri türlerini,,,, Boolean Char Date tüm yapıları ve tüm numaralandırmalar içerir. Bir başvuru türü değişkeni, bir nesne örneğine bir başvuruyu, bellekteki bir başvuruya depolar. Başvuru türleri sınıflar, diziler, temsilciler ve dizeler içerir. Daha fazla bilgi için bkz. değer türleri ve başvuru türleri.

Bir değişken bir değer türünde ise, öğesinin davranışı Nothing değişkenin null yapılabilir bir veri türünde olup olmamasına bağlıdır. Null olabilen bir değer türünü temsil etmek için ? tür adına bir değiştirici ekleyin. NothingNull atanabilir bir değişkene atama, değerini olarak ayarlar null . Daha fazla bilgi ve örnek için bkz. Nullable değer türleri.

Bir değişken null değer atanabilir olmayan bir değer türünde ise, bu değere atama, Nothing kendisini belirtilen tür için varsayılan değere ayarlar. Bu tür değişken üyeleri içeriyorsa, hepsi varsayılan değerlerine ayarlanır. Aşağıdaki örnek, skalar türler için bunu gösterir.

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

Bir değişken başvuru türünde ise değişkenine atama, Nothing null değişkenin türünün bir başvurusuna ayarlanır. Başvuruya ayarlanmış bir değişken null herhangi bir nesneyle ilişkilendirilmemiş. Aşağıdaki örnek şunu gösterir:

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

Başvuru (veya null yapılabilir değer türü) değişkeninin olup olmadığı denetlenirken null , = Nothing veya kullanmayın <> Nothing . Her zaman Is Nothing veya kullanın IsNot Nothing .

Visual Basic dizeler için boş dize eşittir Nothing . Bu nedenle, "" = Nothing doğru.

Aşağıdaki örnek, ve işleçlerini kullanan karşılaştırmaları gösterir Is IsNot :

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

Bir yan tümce kullanmadan bir değişken bildirir As ve öğesini olarak ayarlarsanız Nothing , değişkenin türü vardır Object . Buna bir örnektir Dim something = Nothing . Bu durumda açık ve kapalı olduğunda derleme zamanı hatası oluşur Option Strict Option Infer .

NothingBir nesne değişkenine atadığınızda, artık herhangi bir nesne örneğine başvurmayacaktır. Değişken daha önce bir örneğe başvurdıysa, Nothing örneği kendisini sonlandıramaz. Örnek sonlandırılır ve bununla ilişkili bellek ve sistem kaynakları serbest bırakılır ve yalnızca çöp toplayıcı (GC) kalan etkin bir başvuru olmadığını algılar.

NothingDBNullbaşlatılmamış bir varyantı veya varolmayan bir veritabanı sütununu temsil eden nesnesinden farklıdır.

Ayrıca bkz.