Existe um equivalente VB.NET para o ??
operador de C # ?
vb.net
operators
null-coalescing-operator
Nathan Koop
fonte
fonte
Respostas:
Use o
If()
operador com dois argumentos ( documentação da Microsoft ):fonte
If()
declaração em VB é o mesmo que oif...?...:
em C #, não o??
operador??
(ver outra resposta a esta pergunta: stackoverflow.com/a/20686360/1474939 )If
com três parâmetros . Isso não é semelhante ao??
operador do C # . Melhor resposta é If, do Code Maverick, com dois argumentos . (Nick teve uma resposta semelhante, anos antes, mas não inclui a explicação da MSDN.)O
IF()
operador deve fazer o truque para você:http://visualstudiomagazine.com/listings/list.aspx?id=252
fonte
A resposta aceita não tem nenhuma explicação e é apenas um link.
Portanto, pensei em deixar uma resposta que explique como o
If
operador trabalha, retirado do MSDN:Operador If (Visual Basic)
Se o operador chamado com dois argumentos
Peças
VB
Um exemplo de como lidar com mais de dois valores (
if
s aninhados ):fonte
Você pode usar um método de extensão. Este funciona como SQL
COALESCE
e provavelmente é um exagero para o que você está tentando testar, mas funciona.O interno
If(nullable, secondChoice)
pode lidar apenas com duas opções anuláveis. Aqui, você podeCoalesce
quantos parâmetros desejar. O primeiro não nulo será retornado e o restante dos parâmetros não serão avaliados depois disso (curto-circuito, comoAndAlso
/&&
eOrElse
/||
)fonte
Return args.FirstOrDefault(Function(arg) arg IsNot Nothing)
:-)A única limitação significativa da maioria dessas soluções é que elas não causam um curto-circuito. Portanto, eles não são realmente equivalentes a
??
.O
If
operador interno não avaliará os parâmetros subsequentes, a menos que o parâmetro anterior seja avaliado em nada.As seguintes declarações são equivalentes:
C #
VB
Isso funcionará em todos os casos em que
??
funciona. Qualquer uma das outras soluções teria que ser usada com extrema cautela, pois elas poderiam facilmente introduzir bugs em tempo de execução.fonte
Consulte a documentação da Microsoft sobre o If Operator (Visual Basic) aqui: https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/operators/if-operator
Aqui estão alguns exemplos (VB.Net)
fonte