Il tuo titolo (e tag) chiede un "int", ma la tua domanda dice che stai ricevendo un errore con un "decimale". In entrambi i casi, non esiste nulla di "vuoto" quando si tratta di un value type (come ad esempio Integer
, Decimal
, ecc.). Non possono essere impostati su Nothing
come si può con un reference type (come un String
o classe). Invece, i tipi di valore dispongono di un costruttore implicito predefinito che inizializza automaticamente le variabili di quel tipo sul valore predefinito. Per valori numerici come Integer
e Decimal
, questo è 0. Per altri tipi, vedere this table.
in modo da poter verificare se un tipo di valore è stato inizializzato con il seguente codice:
Dim myFavoriteNumber as Integer = 24
If myFavoriteNumber = 0 Then
''#This code will obviously never run, because the value was set to 24
End If
Dim mySecondFavoriteNumber as Integer
If mySecondFavoriteNumber = 0 Then
MessageBox.Show("You haven't specified a second favorite number!")
End If
noti che mySecondFavoriteNumber
viene inizializzato automaticamente a 0 (il valore predefinito per un Integer
) dietro le quinte da parte del compilatore, quindi l'istruzione If
è True
. In realtà, la dichiarazione di mySecondFavoriteNumber
sopra è equivalente alla seguente dichiarazione:
Dim mySecondFavoriteNumber as Integer = 0
Naturalmente, come avrete probabilmente notato, non c'è modo di sapere se il numero preferito di una persona è realtà 0, o se non hanno ancora specificato un numero preferito. Se veramente bisogno di un tipo di valore che può essere impostato per Nothing
, è possibile utilizzare Nullable(Of T)
, dichiarando la variabile invece come:
Dim mySecondFavoriteNumber as Nullable(Of Integer)
E il controllo per vedere se è stato assegnato come segue:
If mySecondFavoriteNumber.HasValue Then
''#A value has been specified, so display it in a message box
MessageBox.Show("Your favorite number is: " & mySecondFavoriteNumber.Value)
Else
''#No value has been specified, so the Value property is empty
MessageBox.Show("You haven't specified a second favorite number!")
End If
Solo una nota a margine: in realtà si può * * assegnare Niente da un tipo di valore in VB.Net. Ma in questo caso, Nothing non significa "null" ma "default (T)", quindi per numeri interi è uguale a 0. – jeroenh
@jeroenh: è corretto. Si noti che ho detto che non possono essere impostati su 'Nothing' * come si potrebbe con un tipo di riferimento *. Impostando un tipo di valore su 'Nothing', verrà ripristinato il suo tipo predefinito. Il punto è che non esiste uno stato "nullo" o "vuoto" per i tipi di valore; contengono sempre un valore. –
Nota più recentemente, 'Dim mySecondFavoriteNumber as Integer?' È lo stesso di 'Dim mySecondFavoriteNumber as Nullable (Of Integer)' –