Existe uma expressão do VB.NET que * sempre * produz nulo?
Todos sabemos que os VB'sNothing
é semelhante, mas não equivalente, aos c #null
. (Se você não está ciente disso, consulteesta resposta primeiro.)
Por curiosidade, gostaria de saber o seguinte:
Existe uma expressão VB.NET que sempre produznull
?
Para dar um exemplo concreto, use a seguinte declaração:
Dim o As Object = If(myBool, 5, ...)
É possível substituir...
com algo, tal queo
é5
quandomyBool
é verdade eNothing/null
quandomyBool
é falso?
Soluções óbvias que não funcionarão:
Nothing
(veja a pergunta na resposta vinculada acima),DirectCast(Nothing, Object)
(gera um erro em tempo de compilação com a opção Strict On),DirectCast(Nothing, Integer?)
funciona para este exemplo, mas não funcionaem geral (se você substituir5
com5.0
neste exemplo, você precisa modificar o elenco).Soluções alternativas óbvias (não contam como respostas):
Declarar umObject
variável ou campo, defina-o comoNothing
e use isso para...
,definir um método ou propriedade que sempre retornaNothing
,DirectCast
o segundo parâmetro (5
) paraObject
.Nota: O exemplo acima é apenas um exemplo. A pergunta em si está escrita em negrito.