Zoeken…


Als dan anders

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

Als operator

9.0
If(condition > value, "True", "False")

We kunnen de If- operator gebruiken in plaats van If ... Then ... Else..End If- instructieblokken.

Overweeg het volgende voorbeeld:

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

is hetzelfde als

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

If() kortsluitevaluatie gebruikt , betekent dit dat het alleen de gebruikte argumenten zal evalueren. Als de voorwaarde vals is (of een Nullable dat Nothing ), wordt het eerste alternatief helemaal niet geëvalueerd en worden geen van de bijwerkingen ervan waargenomen. Dit is in feite hetzelfde als de ternaire operator van C # in de vorm van condition?a:b .

Dit is vooral handig om uitzonderingen te voorkomen:

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

We weten allemaal dat delen door nul een uitzondering oplevert, maar If() waakt hiertegen door alleen de uitdrukking te kortsluiten die de voorwaarde al heeft gegarandeerd.

Een ander voorbeeld:

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

Als varString <> "N/A" varDate in False , zal het de waarde van Now.Date toewijzen als Now.Date zonder de eerste expressie te evalueren.

9.0

Oudere versies van VB hebben niet de operator If() en moeten het doen met de ingebouwde functie IIf() . Omdat het een functie is, geen operator, is er geen kortsluiting; alle uitdrukkingen worden geëvalueerd, met alle mogelijke bijwerkingen, waaronder prestatieboetes, veranderende status en het gooien van uitzonderingen. (Beide bovenstaande voorbeelden die uitzonderingen vermijden, zouden worden omgezet als ze worden omgezet in IIf .) Als een van deze bijwerkingen een probleem oplevert, is er geen manier om een inline voorwaardelijk te gebruiken; vertrouw in plaats daarvan op If..Then blokken zoals gewoonlijk.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow