Czy istnieje odpowiednik VB.NET dla ??
operatora C # ?
vb.net
operators
null-coalescing-operator
Nathan Koop
źródło
źródło
Odpowiedzi:
Użyj
If()
operatora z dwoma argumentami ( dokumentacja Microsoft ):źródło
If()
instrukcja w VB jest taka sama jakif...?...:
w C #, a nie??
operator??
(zobacz inną odpowiedź na to pytanie: stackoverflow.com/a/20686360/1474939 )If
z trzema parametrami . To nie jest podobne do??
operatora C # . Lepszą odpowiedzią jest Code Maverick's If z dwoma argumentami . (Nick miał podobną odpowiedź wiele lat wcześniej, ale nie zawiera wyjaśnienia z MSDN.)IF()
Operator powinien wykonać trick dla Ciebie:http://visualstudiomagazine.com/listings/list.aspx?id=252
źródło
Akceptowana odpowiedź nie zawiera żadnego wyjaśnienia i jest po prostu linkiem.
Dlatego pomyślałem, że zostawię odpowiedź, która wyjaśnia, jak
If
działa operator zaczerpnięty z MSDN:Jeśli operator (Visual Basic)
Jeśli operator zadzwonił z dwoma argumentami
Części
VB
Przykład obsługi więcej niż dwóch wartości (zagnieżdżonych
if
):źródło
Możesz użyć metody rozszerzenia. Ten działa jak SQL
COALESCE
i prawdopodobnie przesadza z tym, co próbujesz przetestować, ale działa.Wbudowany
If(nullable, secondChoice)
może obsłużyć tylko dwa zerowane opcje. Tutaj można ustawić dowolnąCoalesce
liczbę parametrów. Pierwszy inny niż zerowy zostanie zwrócony, a pozostałe parametry nie zostaną następnie ocenione (zwarte, takie jakAndAlso
/&&
iOrElse
/||
)źródło
Return args.FirstOrDefault(Function(arg) arg IsNot Nothing)
:-)Jedynym znaczącym ograniczeniem większości tych rozwiązań jest to, że nie powodują zwarcia. Dlatego nie są w rzeczywistości równoważne z
??
.Wbudowany
If
operator nie oceni kolejnych parametrów, chyba że wcześniejszy parametr nie da wartości.Następujące instrukcje są równoważne:
DO#
VB
??
Działa to we wszystkich przypadkach, w których działa. Każde inne rozwiązanie musiałoby być stosowane z najwyższą ostrożnością, ponieważ mogłyby one łatwo wprowadzić błędy w czasie wykonywania.źródło
Sprawdź dokumentację Microsoft dotyczącą If Operator (Visual Basic) tutaj: https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/operators/if-operator
Oto kilka przykładów (VB.Net)
źródło