J'utilise Nullable(Of Integer)
et vient d'être piqué par Nothing
étant casté à 0. C'est exactement ce que je ne veux pas lorsque vous utilisez Nullable(Of Integer)
.Odd interaction de "If" et Nullable (Of Integer)
func1
ci-dessous ne se comporte pas comme je m'attendais. Je peux l'obtenir pour faire ma volonté en l'amendant (voir func2
). Mais je ne vois pas pourquoi cela devrait être nécessaire (et je pense que je pourrais avoir du mal à m'en souvenir).
Pourquoi func1
ne fait-il pas ce que je veux? Je pense que j'ai déjà rencontré ça, et je préférerais ne pas le revoir.
Function func1(parameter As Integer) As Nullable(Of Integer)
Return If(parameter > 10, parameter, Nothing)
End Function
Function func2(parameter As Integer) As Nullable(Of Integer)
Return If(parameter > 10, parameter, DirectCast(Nothing, Integer?))
End Function
Sub Main
' Should be True
System.Console.WriteLine(func1(11).HasValue)
System.Console.WriteLine(func2(11).HasValue)
System.Console.WriteLine()
' Should be False
System.Console.WriteLine(func1(9).HasValue)
System.Console.WriteLine(func2(9).HasValue)
End Sub
Les résultats que je reçois (en cours d'exécution cela en LINQPad) sont:
True
True
True
False
Je vais modifier ma réponse. –
Brainmelt. Merci @Fabio. Je l'ai dit dans ma réponse :) –