Dela via


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 Trueutvä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 Nothingreturneras 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))

Se även