Share via


Nothing (Visual Basic)

Représente la valeur par défaut d'un type de données.

Notes

L'assignation de Nothing à une variable la définit à sa valeur par défaut pour son type déclaré. Si ce type contient des membres de variable, ils ont tous leurs valeurs par défaut. L'exemple suivant illustre cela pour les types scalaires.

Module Module1
    Public Structure testStruct
        Public name As String
        Public number As Short
    End Structure

    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)

    End Sub

End Module

Si la variable est de type référence, une valeur Nothing signifie que la variable n'est pas associée à un objet. La variable a une valeur Null. C'est ce qu'illustre l'exemple suivant.

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

Pour tester les variables de type référence et Nullable pour les valeurs Nothing, utilisez l'opérateur Is ou l'opérateur IsNot. Des comparaisons qui utilisent le signe égal, par exemple someVar = Nothing, évaluent toujours à Nothing. L'exemple suivant montre les comparaisons qui utilisent les opérateurs Is et IsNot.

Module Module1
    Sub Main()

        Dim testObject As Object
        testObject = Nothing
        ' The following statement displays "True".
        Console.WriteLine(testObject Is Nothing)

        Dim tc As New TestClass
        tc = Nothing
        ' The following statement displays "False".
        Console.WriteLine(tc IsNot Nothing)

        Dim n? As Integer
        ' The following statement displays "True".
        Console.WriteLine(n Is Nothing)
        n = 4
        ' The following statement displays "False".
        Console.WriteLine(n Is Nothing)
        n = Nothing
        ' The following statement displays "False".
        Console.WriteLine(n IsNot Nothing)

    End Sub

    Class TestClass
        Public field1 As Integer
        Dim field2 As Boolean
    End Class
End Module

Pour plus d'informations et d'exemples, consultez Types valeur Nullable (Visual Basic).

Lorsque vous assignez Nothing à une variable objet, cette dernière ne fait plus référence à une instance d'objet. Si la variable avait fait référence à une instance au préalable, l'assignation de Nothing à la variable ne met pas fin à l'instance. L'instance se termine, et les ressources mémoire et système qui lui sont associées sont libérées uniquement lorsque le garbage collector (GC) détecte l'absence de toute référence active restante.

Voir aussi

Référence

Dim, instruction (Visual Basic)

Is, opérateur (Visual Basic)

Opérateur IsNot (Visual Basic)

Concepts

Durée de vie d'un objet : création et destruction des objets (Visual Basic)

Durée de vie dans Visual Basic

Types valeur Nullable (Visual Basic)