¿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 )Ifcon 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
Ifoperador 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 (
ifs anidados ):fuente
Puedes usar un método de extensión. Este funciona como SQL
COALESCEy 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 puedeCoalescetantos 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
Ifoperador 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