If Operator (Visual Basic)
Använder kortslutningsutvärdering för att villkorligt returnera ett av två värden. Operatorn If
kan anropas med tre argument eller med två argument.
Syntax
If( [argument1,] argument2, argument3 )
Om operatorn anropas med tre argument
När If
anropas med tre argument måste det första argumentet utvärderas till ett värde som kan gjutas som en Boolean
. Det Boolean
värdet avgör vilka av de andra två argumenten som utvärderas och returneras. Följande lista gäller endast när operatorn If
anropas med hjälp av tre argument.
Delar
Period | Definition |
---|---|
argument1 |
Obligatoriska. Boolean . Avgör vilka av de andra argumenten som ska utvärderas och returneras. |
argument2 |
Obligatoriska. Object . Utvärderas och returneras om argument1 utvärderas till True . |
argument3 |
Obligatoriska. Object . Utvärderas och returneras om argument1 utvärderas till False eller om argument1 är en nullbarBoolean variabel som utvärderas till Ingenting. |
En If
operator som anropas med tre argument fungerar som en IIf
funktion förutom att den använder kortslutningsutvärdering. En IIf
funktion utvärderar alltid alla tre argumenten, medan en If
operator som har tre argument utvärderar endast två av dem. Det första If
argumentet utvärderas och resultatet gjuts som ett Boolean
värde, True
eller False
. Om värdet är True
utvärderas argument2
och dess värde returneras, men argument3
utvärderas inte. Om värdet för Boolean
uttrycket är False
, argument3
utvärderas och dess värde returneras, men argument2
utvärderas inte. Följande exempel illustrerar användningen av If
när tre argument används:
' 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"))
I följande exempel visas värdet för kortslutningsutvärdering. Exemplet visar två försök att dividera variabeln number
efter variabel divisor
förutom när divisor
är noll. I så fall ska en 0 returneras och inget försök bör göras att utföra divisionen eftersom ett körningsfel skulle uppstå. If
Eftersom uttrycket använder en kortslutningsutvärdering utvärderas antingen det andra eller det tredje argumentet, beroende på värdet för det första argumentet. Om det första argumentet är sant är divisorn inte noll och det är säkert att utvärdera det andra argumentet och utföra divisionen. Om det första argumentet är falskt utvärderas endast det tredje argumentet och ett 0 returneras. När divisorn är 0 görs därför inget försök att utföra divisionen och inga felresultat. Men eftersom IIf
inte använder kortslutningsutvärdering utvärderas det andra argumentet även när det första argumentet är falskt. Detta orsakar ett körningsfel dividerat med noll.
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))
Om operatorn anropas med två argument
Det första argumentet som If
ska utelämnas. Detta gör att operatorn kan anropas med hjälp av endast två argument. Följande lista gäller endast när operatorn If
anropas med två argument.
Delar
Period | Definition |
---|---|
argument2 |
Obligatoriska. Object . Måste vara en referens eller nullbar värdetyp. Utvärderas och returneras när den utvärderas till något annat än Nothing . |
argument3 |
Obligatoriska. Object . Utvärderas och returneras om argument2 utvärderas till Nothing . |
Boolean
När argumentet utelämnas måste det första argumentet vara en referens eller nullbar värdetyp. Om det första argumentet utvärderas till Nothing
returneras värdet för det andra argumentet. I alla andra fall returneras värdet för det första argumentet. I följande exempel visas hur den här utvärderingen fungerar:
' 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))