If Operator (Visual Basic)
Maakt gebruik van evaluatie van kortsluiting om voorwaardelijk een van de twee waarden te retourneren. De If
operator kan worden aangeroepen met drie argumenten of met twee argumenten.
Syntaxis
If( [argument1,] argument2, argument3 )
Als de operator met drie argumenten wordt aangeroepen
Wanneer If
wordt aangeroepen met behulp van drie argumenten, moet het eerste argument een waarde evalueren die als een Boolean
. Deze Boolean
waarde bepaalt welke van de andere twee argumenten wordt geëvalueerd en geretourneerd. De volgende lijst is alleen van toepassing wanneer de If
operator wordt aangeroepen met behulp van drie argumenten.
generator
Term | Definitie |
---|---|
argument1 |
Vereist. Boolean . Bepaalt welke van de andere argumenten moet worden geëvalueerd en geretourneerd. |
argument2 |
Vereist. Object . Geëvalueerd en geretourneerd als argument1 dat True wordt geëvalueerd. |
argument3 |
Vereist. Object . Geëvalueerd en geretourneerd als argument1 dit een argument1 False null-variabeleBoolean is die resulteert in niets. |
Een If
operator die met drie argumenten wordt aangeroepen, werkt als een IIf
functie, behalve dat deze gebruikmaakt van kortsluitingsevaluatie. Een IIf
functie evalueert altijd alle drie de argumenten, terwijl een If
operator met drie argumenten slechts twee argumenten evalueert. Het eerste If
argument wordt geëvalueerd en het resultaat wordt omgezet als een Boolean
waarde, True
of False
. Als de waarde is True
, argument2
wordt deze geëvalueerd en wordt de waarde ervan geretourneerd, maar argument3
niet geëvalueerd. Als de waarde van de Boolean
expressie wordt False
argument3
geëvalueerd en de waarde ervan wordt geretourneerd, maar argument2
niet wordt geëvalueerd. In de volgende voorbeelden ziet u het gebruik van If
wanneer er drie argumenten worden gebruikt:
' This statement prints TruePart, because the first argument is true.
Console.WriteLine(If(True, "TruePart", "FalsePart"))
' This statement prints FalsePart, because the first argument is false.
Console.WriteLine(If(False, "TruePart", "FalsePart"))
Dim number = 3
' With number set to 3, this statement prints Positive.
Console.WriteLine(If(number >= 0, "Positive", "Negative"))
number = -1
' With number set to -1, this statement prints Negative.
Console.WriteLine(If(number >= 0, "Positive", "Negative"))
In het volgende voorbeeld ziet u de waarde van de evaluatie van kortsluiting. In het voorbeeld ziet u twee pogingen om een variabele number
divisor
te delen, behalve wanneer divisor
nul is. In dat geval moet een 0 worden geretourneerd en moet er geen poging worden gedaan om de deling uit te voeren, omdat er een runtimefout zou optreden. Omdat de If
expressie gebruikmaakt van kortsluitingsevaluatie, wordt het tweede of het derde argument geëvalueerd, afhankelijk van de waarde van het eerste argument. Als het eerste argument waar is, is de deler niet nul en is het veilig om het tweede argument te evalueren en de deling uit te voeren. Als het eerste argument onwaar is, wordt alleen het derde argument geëvalueerd en wordt een 0 geretourneerd. Als de deler 0 is, wordt er dus geen poging gedaan om de deling uit te voeren en geen foutresultaten. Omdat IIf
echter geen kortsluitingsevaluatie wordt gebruikt, wordt het tweede argument geëvalueerd, zelfs als het eerste argument onwaar is. Dit veroorzaakt een runtime-fout die wordt gedeeld door nul.
number = 12
' When the divisor is not 0, both If and IIf return 4.
Dim divisor = 3
Console.WriteLine(If(divisor <> 0, number \ divisor, 0))
Console.WriteLine(IIf(divisor <> 0, number \ divisor, 0))
' When the divisor is 0, IIf causes a run-time error, but If does not.
divisor = 0
Console.WriteLine(If(divisor <> 0, number \ divisor, 0))
' Console.WriteLine(IIf(divisor <> 0, number \ divisor, 0))
Als de operator met twee argumenten wordt aangeroepen
Het eerste argument dat moet If
worden weggelaten. Hierdoor kan de operator worden aangeroepen met slechts twee argumenten. De volgende lijst is alleen van toepassing wanneer de If
operator wordt aangeroepen met twee argumenten.
generator
Term | Definitie |
---|---|
argument2 |
Vereist. Object . Moet een verwijzings- of null-waardetype zijn. Geëvalueerd en geretourneerd wanneer het resulteert in iets anders dan Nothing . |
argument3 |
Vereist. Object . Geëvalueerd en geretourneerd als argument2 dat Nothing wordt geëvalueerd. |
Wanneer het Boolean
argument wordt weggelaten, moet het eerste argument een verwijzings- of null-waardetype zijn. Als het eerste argument wordt geëvalueerd Nothing
, wordt de waarde van het tweede argument geretourneerd. In alle andere gevallen wordt de waarde van het eerste argument geretourneerd. In het volgende voorbeeld ziet u hoe deze evaluatie werkt:
' Variable first is a nullable type.
Dim first? As Integer = 3
Dim second As Integer = 6
' Variable first <> Nothing, so its value, 3, is returned.
Console.WriteLine(If(first, second))
second = Nothing
' Variable first <> Nothing, so the value of first is returned again.
Console.WriteLine(If(first, second))
first = Nothing
second = 6
' Variable first = Nothing, so 6 is returned.
Console.WriteLine(If(first, second))