que estoy haciendo un poco de depuración, y así lo desea registrar el valor eventArgsEl uso de VB.NET IIF me sale NullReferenceException
Tengo una línea simple que básicamente hace:
logLine = "e.Value: " + IIf(e.Value Is Nothing, "", e.Value.ToString())
La forma en que comprender la función IIF, si e.Value es Nothing (null), entonces debería devolver la cadena vacía, si no debería devolver el .ToString del valor. Sin embargo, recibo una NullReferenceException. Esto no tiene sentido para mí.
¿Alguna idea?
También: Si() es typesafe. IIf() no es. –
Todavía tengo problemas con el cortocircuito Si con tipos como Fecha y Boolean y aún así asignar a un tipo que admite nulos. Por ejemplo, quiero devolver 'Nada' como en el ejemplo anterior a un valor booleano Nullable usando 'If' pero aún así devuelve 'False'. Loco cuando rompo las líneas en un If-Else-End si la lógica funciona como se esperaba. – atconway
@atconway, aparentemente 'Nothing' en VB es como' default' en C#, en lugar de 'null', así que cuando se usa en un contexto donde' Boolean' es el tipo implícito, su valor es 'False' en vez de' null'/'Nada' como normalmente lo pensaría (de acuerdo con http://stackoverflow.com/q/1828173/2688). Tendrá que convertir un lado del 'If' en el tipo correcto (por ejemplo,' Boolean? ') Para obtener el resultado deseado. Del mismo modo, en C#, necesita lanzar un lado (pero es un error de compilación si no lo hace). – bdukes