Visual Basic .NET Language
Voorwaarden
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
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.
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.