Nothing (Visual Basic)
Rappresenta il valore predefinito di qualsiasi tipo di dati.Per i tipi di riferimento, il valore predefinito è null riferimento.Per i tipi di valore, il valore predefinito varia a seconda che il tipo di valore è nullable.
[!NOTA]
Per i tipi di valore non nullable, Nothing in Visual Basic differisce da null in c#.In Visual Basic, se si imposta una variabile di un tipo di valore non nullable a Nothing, la variabile è impostata sul valore predefinito per il suo tipo dichiarato.In c#, se si assegna una variabile di un tipo di valore non nullable a null, un errore in fase di compilazione si verifica.
Note
Nothing rappresenta il valore predefinito di un tipo di dati.Il valore predefinito varia a seconda che la variabile è di un tipo di valore o di un tipo di riferimento.
Una variabile di un oggetto tipo di valore contiene direttamente il valore.I tipi di valore sono inclusi tutti i tipi di dati numerici, Boolean, Char, Date, tutte le strutture e le enumerazioni.Una variabile di un oggetto tipo di riferimento archivia un riferimento a un'istanza di oggetto in memoria.I tipi di riferimento sono incluse le classi, le matrici, delegati e stringhe.Per ulteriori informazioni, vedere Tipi valore e tipi riferimento.
Se una variabile è di tipo valore, il comportamento di Nothing varia a seconda che la variabile è di un tipo di dati nullable.Per rappresentare un tipo di valore nullable, aggiungere un oggetto ? modificatore al nome del tipo.assegnare Nothing le nullable una variabile imposta il valore su null.Per ulteriori informazioni ed esempi, vedere Tipi di valori nullable (Visual Basic).
se una variabile è di un tipo di valore che non è nullable, assegnare Nothing lo impostato il valore predefinito per il tipo dichiarato.Se nel tipo si trovano membri variabili, questi vengono tutti impostati ai valori predefiniti corrispondenti.Questo comportamento viene illustrato nell'esempio seguente per i tipi scalari.
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
Se una variabile è di tipo riferimento, assegnare Nothing per impostare variabili a un oggetto null riferimento del tipo della variabile.Una variabile che è impostata su null il riferimento non associato ad alcun oggetto.Nell'esempio che segue viene illustrato quanto descritto.
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
Nel controllare se tipo di valore NULL o di riferimento) una variabile sia null, non utilizzare = Nothing o <> Nothing.Utilizzare sempre Is Nothing o IsNot Nothing.
Per le stringhe in Visual Basic, equals di stringa vuota Nothing.di conseguenza, "" = Nothing è true.
Nell'esempio seguente vengono illustrati confronti in cui vengono utilizzati gli operatori Is e 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
Se si dichiara una variabile senza utilizzare una clausola As e la si imposta su Nothing, la variabile dispone di un tipo di Object.Un esempio è Dim something = Nothing.Un errore in fase di compilazione si verifica in questo caso Option Strict è attivato e Option Infer è disattivato.
Quando si assegna la parola chiave Nothing a una variabile oggetto, tale variabile non farà più riferimento all'istanza di un oggetto.Se in precedenza la variabile ha fatto riferimento a un'istanza, l'istanza non viene automaticamente terminata quando si imposta la variabile su Nothing.L'istanza viene terminata e le risorse di memoria e di sistema associate a essa vengono rilasciate solo quando il Garbage Collector non rileva più riferimenti attivi.
Nothing è diverso da DBNull oggetto, che rappresenta una variante non inizializzate o una colonna inesistente del database.
Vedere anche
Riferimenti
Operatore IsNot (Visual Basic)
Concetti
Durata degli oggetti: come creare e distruggere oggetti (Visual Basic)