Votre titre (et votre balise) vous demande un "int", mais votre question indique que vous obtenez une erreur avec un "décimal". De toute façon, il n'y a rien de tel que "vide" quand il s'agit d'un value type (tel qu'un Integer
, Decimal
, etc.). Ils ne peuvent pas être réglés sur Nothing
comme vous le feriez avec un reference type (comme un String
ou un cours). Au lieu de cela, les types de valeur ont un constructeur par défaut implicite qui initialise automatiquement vos variables de ce type à sa valeur par défaut. Pour les valeurs numériques telles que Integer
et Decimal
, la valeur est 0. Pour les autres types, voir this table.
Vous pouvez vérifier si un type de valeur a été initialisé avec le code suivant:
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
Notez que mySecondFavoriteNumber
est automatiquement initialisé à 0 (la valeur par défaut pour un Integer
) dans les coulisses du compilateur, l'instruction If
est True
. En fait, la déclaration de mySecondFavoriteNumber
ci-dessus est équivalente à la déclaration suivante:
Dim mySecondFavoriteNumber as Integer = 0
Bien sûr, comme vous l'avez probablement remarqué, il n'y a aucun moyen de savoir si est fait 0 numéro préféré d'une personne, ou s'ils n'ont pas encore spécifié de numéro préféré. Si vous avez vraiment besoin d'un type de valeur qui peut être réglé sur Nothing
, vous pouvez utiliser Nullable(Of T)
, déclarant la variable à la place que:
Dim mySecondFavoriteNumber as Nullable(Of Integer)
Et vérifier s'il a été affecté comme suit:
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
Juste une remarque: en fait, vous pouvez * * attribuer Rien à un type de valeur dans VB.Net. Mais dans ce cas, Nothing ne signifie pas 'null' mais 'default (T)', donc pour les entiers, c'est la même chose que 0. – jeroenh
@jeroenh: C'est correct. Notez que j'ai dit qu'ils ne peuvent pas être mis à 'Nothing' * comme vous le feriez avec un type de référence *. Si vous définissez un type de valeur sur 'Nothing', il sera initialisé à son type par défaut. Le fait est qu'il n'y a pas d'état "nul" ou "vide" pour les types de valeur; ils contiennent toujours une valeur. –
Plus récemment, 'Dim mySecondFavoriteNumber as Integer?' Est identique à 'Dim mySecondFavoriteNumber as Nullable (Of Integer)' –