Share via


Nothing (Visual Basic)

Représente la valeur par défaut d'un type de données. Pour les types référence, la valeur par défaut est la référence d' null . Pour les types valeur, la valeur par défaut varie selon que le type valeur est nullable.

Notes

Pour les types valeur non Null, Nothing en Visual Basic et l' null en c#.En Visual Basic, si vous définissez une variable d'un type valeur non Null à Nothing, la variable est définie à la valeur par défaut pour son type déclaré.En c#, si vous assignez une variable d'un type valeur non Null à null, une erreur de compilation se produit.

Notes

Nothing représente la valeur par défaut d'un type de données. La valeur par défaut dépend de si la variable est d'un type valeur ou un type référence.

une variable d'un type valeur contient directement sa valeur. Les types valeur incluent tous les types de données numériques, Boolean, Char, Date, toutes les structures, et toutes les énumérations. Une variable d'un type référence enregistre une référence à une instance de l'objet en mémoire. Les types référence incluent des classes, des tableaux, des délégués, et les chaînes. Pour plus d'informations, consultez Types valeur et types référence.

si une variable est d'un type valeur, le comportement d' Nothing dépend de si la variable est d'un type de données nullable. Pour représenter un type valeur nullable, ajoutez un modificateur d' ? au nom de type. L'assignation Nothing à une variable nullable définit la valeur à null. Pour plus d'informations et d'exemples, consultez Types valeur Nullable (Visual Basic).

Si une variable est d'un type valeur qui n'est pas nullable, lui assigner Nothing le définit la 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

    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

si une variable est d'un type référence, l'assignant à Nothing aux ensembles variables à une référence d' null du type de la variable. Une variable qui a une référence d' null n'est pas associé à un objet. 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

En vérifiant si une variable de référence (ou type valeur nullable) est null, n'utilisez pas = Nothing ou <> Nothing. Utilisez toujours Is Nothing ou IsNot Nothing.

Pour les chaînes en Visual Basic, la chaîne vide égale Nothing. Par conséquent, "" = Nothing est true.

L'exemple suivant montre les comparaisons qui utilisent les opérateurs Is et 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

Si vous déclarez une variable sans utiliser de clause As et que vous la définissez sur Nothing, la variable a un type Object. Un exemple est Dim something = Nothing. Une erreur de compilation se produit dans ce cas lorsque Option Strict est activé et Option Infer est désactivé.

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.

Nothing diffère de l'objet d' DBNull , qui représente une variante non initialisée ou une colonne inexistante de base de données.

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)