¿Existe un equivalente de VB.NET para el ??
operador de C # ?
vb.net
operators
null-coalescing-operator
Nathan Koop
fuente
fuente
Respuestas:
Use el
If()
operador con dos argumentos ( documentación de Microsoft ):fuente
If()
declaración en VB es la misma queif...?...:
en C #, no el??
operador??
(vea otra respuesta a esta pregunta: stackoverflow.com/a/20686360/1474939 )If
con tres parámetros . Eso no es similar al??
operador de C # . La mejor respuesta es If de Code Maverick con dos argumentos . (Nick tuvo una respuesta similar, años antes, pero no incluye la explicación de MSDN.)El
IF()
operador debe hacer el truco por ti:http://visualstudiomagazine.com/listings/list.aspx?id=252
fuente
La respuesta aceptada no tiene ninguna explicación y es simplemente un enlace.
Por lo tanto, pensé en dejar una respuesta que explica cómo funciona el
If
operador tomado de MSDN:Operador If (Visual Basic)
Si el operador fue llamado con dos argumentos
Partes
VB
Un ejemplo de cómo manejar más de dos valores (
if
s anidados ):fuente
Puedes usar un método de extensión. Este funciona como SQL
COALESCE
y probablemente sea excesivo para lo que está tratando de probar, pero funciona.El incorporado
If(nullable, secondChoice)
solo puede manejar dos opciones anulables. Aquí, uno puedeCoalesce
tantos parámetros como desee. Se devolverá el primer no nulo, y el resto de los parámetros no se evaluarán después de eso (cortocircuito, comoAndAlso
/&&
yOrElse
/||
)fuente
Return args.FirstOrDefault(Function(arg) arg IsNot Nothing)
:-)La única limitación importante de la mayoría de estas soluciones es que no cortocircuitarán. Por lo tanto, en realidad no son equivalentes a
??
.El
If
operador incorporado no evaluará los parámetros posteriores a menos que el parámetro anterior no se evalúe como nada.Las siguientes declaraciones son equivalentes:
C#
VB
Esto funcionará en todos los casos donde
??
funciona. Cualquiera de las otras soluciones debería usarse con extrema precaución, ya que podrían introducir fácilmente errores de tiempo de ejecución.fuente
Consulte la documentación de Microsoft sobre If Operator (Visual Basic) aquí: https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/operators/if-operator
Aquí hay algunos ejemplos (VB.Net)
fuente