Grazie per il benvenuto.
Al di là dell'uso, se provi i due esempi di codice che ho postato, noterai che forniscono risultati diversi anche se in "apparenza" dovrebbero essere equivalenti.
Credo che il problema sia nell'assegnazione del valore di ritorno di IF(...) ad una variabile di tipo "Nullable".
Infatti se provi questi 2 esempi ottieni lo stesso fenomeno:
Dim boo As Nullable(Of Boolean)
If True Then
boo = Nothing
Else
boo = True
End If
--> Qui "boo" è ancora "Nothing"
boo = If(True, Nothing, True)
-->Qui "boo" è "False", cioè viene valorizzato con il suo valore di default e non con "Nothing", come mi aspetto seguendo le specifiche Microsoft.
Altro esempio:
Dim dt As Nullable(Of Date)
If True Then
dt = Nothing
Else
dt = Today
End If
--> Qui "dt" è ancora "Nothing"
dt = If(True, Nothing, Today)
--> Qui "boo" è "#12:00:00 AM#" (valore di default).
Tieni conto che in un codice più complesso il valore di ritorno non era nemmeno il default ma mi sembrava legato all'espressione verificata come primo argometo dell'istruzione IF(...)
Se non ho garanzie che l'IF ternario sostituisca pienamente la sintassi classica non posso fidarmi ad usarlo.
Grazie per la pazienza...

Rispondi quotando