Suche…


WENN ... Dann ... Else

Dim count As Integer = 0
Dim message As String

If count = 0 Then
    message = "There are no items."
ElseIf count = 1 Then
    message = "There is 1 item."
Else
    message = "There are " & count & " items."
End If

Wenn Betreiber

9,0
If(condition > value, "True", "False")

Wir können den If- Operator anstelle von If ... Then ... Else..End If- Anweisung blockieren.

Betrachten Sie das folgende Beispiel:

If 10 > 9 Then
     MsgBox("True")
Else
     MsgBox("False")
End If

ist das gleiche wie

MsgBox(If(10 > 9, "True", "False"))

If() verwendet eine Kurzschlussbewertung , dh es werden nur die von ihm verwendeten Argumente ausgewertet. Wenn die Bedingung falsch ist (oder ein Nullable , der Nothing ), wird die erste Alternative überhaupt nicht bewertet und keine ihrer Nebenwirkungen wird beobachtet. Dies ist im Grunde dasselbe wie der ternäre Operator von C # in Form von condition?a:b .

Dies ist besonders nützlich, um Ausnahmen zu vermeiden:

Dim z As Integer = If(x = 0, 0, y/x)

Wir alle wissen, dass das Teilen durch Null eine Ausnahme auslöst, aber If() hier verhindert, dass ein Kurzschluss nur zu dem Ausdruck führt, den die Bedingung bereits gewährleistet hat.

Ein anderes Beispiel:

Dim varDate as DateTime = If(varString <> "N/A", Convert.ToDateTime(varString), Now.Date)

Wenn varString <> "N/A" Wert False varDate , wird der Wert von Now.Date als Now.Date ohne den ersten Ausdruck auszuwerten.

9,0

Ältere Versionen von VB verfügen nicht über den Operator If() und müssen mit der integrierten Funktion IIf() . Da es sich um eine Funktion und nicht um einen Operator handelt, wird kein Kurzschluss verursacht. Alle Ausdrücke werden mit allen möglichen Nebeneffekten ausgewertet, einschließlich Leistungsstrafen, Statusänderungen und Ausnahmen. (Die beiden obigen Beispiele, die Ausnahmen vermeiden, würden bei einer Konvertierung in IIf .) Wenn eine dieser Nebenwirkungen ein Problem darstellt, können keine Inline-Bedingungen verwendet werden. If..Then stattdessen auf If..Then Blöcke wie üblich.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow