Je me suis débarrassé de mon comportement inattendu à cause de nombres entiers nullables.La définition de l'entier nullable sur une chaîne ne contenant rien 0
- Si je mets un
Integer
-Nothing
, il devientNothing
comme prévu. - Si je mets un
Integer?
à unString
qui estNothing
, il devient 0!
Bien sûr, je reçois ceci si je lance explicitement le String
à Integer?
ou non.
Je me rends compte que je pourrais travailler autour de cela assez facilement, mais je veux savoir ce qui me manque.
Dim NullString As String = Nothing
Dim NullableInt As Integer? = CType(NullString, Integer?) 'Expected NullableInt to be Nothing, but it's 0!
NullableInt = Nothing 'This works, of course. NullableInt is Nothing.
EDIT: Auparavant, j'avais mon code ici sans la conversion explicite à Integer?
et tout le monde semblait être obsédés par/confus par cela. Il y avait beaucoup de suggestions qu'Option Strict On attraperait ce genre de chose. Cependant, il s'agit en réalité d'une bizarrerie des règles de conversion chaîne-entier qui sont antérieures aux types nullables, mais qui les influencent tout de même.
Utilisez Option Strict On pour détecter rapidement ce type d'erreur. –
Pourquoi attribuez-vous une variable chaîne à un INTEGER Nullable? Acceptez d'activer Option Strict On –
Vous pouvez activer Option Strict un fichier à la fois en plaçant Option Strict On. Cela devrait vous permettre de gérer les erreurs pendant que vous travaillez sur le fichier. Cela vaut vraiment la peine à long terme –