Delen via


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 Truewordt geëvalueerd.
argument3 Vereist. Object. Geëvalueerd en geretourneerd als argument1 dit een argument1False 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 Falseargument3 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 numberdivisor 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 Nothingwordt 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))

Zie ook