Gibt es ein VB.NET-Äquivalent für den ??
Operator von C # ?
vb.net
operators
null-coalescing-operator
Nathan Koop
quelle
quelle
Antworten:
Verwenden Sie den
If()
Operator mit zwei Argumenten ( Microsoft-Dokumentation ):quelle
If()
Aussage in VB ist die gleiche wieif...?...:
in C #, nicht der??
Operator??
(siehe eine andere Antwort auf diese Frage: stackoverflow.com/a/20686360/1474939 )If
mit drei Parametern verwendet wird . Das ist dem Operator von C # nicht ähnlich??
. Bessere Antwort ist Code Mavericks If mit zwei Argumenten . (Nick hatte Jahre zuvor eine ähnliche Antwort, enthält aber keine Erklärung von MSDN.)Der
IF()
Bediener sollte den Trick für Sie tun:http://visualstudiomagazine.com/listings/list.aspx?id=252
quelle
Die akzeptierte Antwort hat keinerlei Erklärung und ist einfach nur ein Link.
Daher dachte ich, ich würde eine Antwort hinterlassen, die erklärt, wie der
If
Operator aus MSDN funktioniert:Wenn Operator (Visual Basic)
Wenn der Operator mit zwei Argumenten aufgerufen wird
Teile
VB
Ein Beispiel für den Umgang mit mehr als zwei Werten (verschachtelte
if
s):quelle
Sie können eine Erweiterungsmethode verwenden. Dieser funktioniert wie SQL
COALESCE
und ist wahrscheinlich übertrieben für das, was Sie testen möchten, aber er funktioniert.Das integrierte Gerät
If(nullable, secondChoice)
kann nur zwei nullbare Optionen verarbeiten. Hier kann man beliebigCoalesce
viele Parameter einstellen. Der erste Wert ungleich Null wird zurückgegeben, und der Rest der Parameter wird danach nicht ausgewertet (kurzgeschlossen, wieAndAlso
/&&
undOrElse
/||
).quelle
Return args.FirstOrDefault(Function(arg) arg IsNot Nothing)
:-)Die einzige wesentliche Einschränkung der meisten dieser Lösungen besteht darin, dass sie nicht kurzschließen. Sie sind daher eigentlich nicht gleichbedeutend mit
??
.Der eingebaute
If
Operator wertet nachfolgende Parameter nur aus, wenn der frühere Parameter nichts ergibt.Die folgenden Aussagen sind äquivalent:
C #
VB
Dies funktioniert in allen Fällen, in denen dies
??
funktioniert. Jede der anderen Lösungen müsste mit äußerster Vorsicht verwendet werden, da sie leicht Laufzeitfehler verursachen könnten.quelle
Überprüfen Sie die Microsoft-Dokumentation zu If Operator (Visual Basic) hier: https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/operators/if-operator
Hier einige Beispiele (VB.Net)
quelle