If 연산자(Visual Basic)
단락 평가를 사용하여 두 값 중 하나를 조건부로 반환합니다. If
연산자는 세 개의 인수 또는 두 개의 인수를 사용하여 호출할 수 있습니다.
구문
If( [argument1,] argument2, argument3 )
연산자가 세 개의 인수로 호출된 경우
세 개의 인수를 사용하여 If
를 호출하는 경우 첫 번째 인수는 Boolean
으로 캐스팅할 수 있는 값으로 평가되어야 합니다. 해당 Boolean
값은 다른 두 인수 중 평가되고 반환되는 인수를 결정합니다. 다음 목록은 세 개의 인수를 사용하여 If
연산자를 호출하는 경우에만 적용됩니다.
부분
용어 | 정의 |
---|---|
argument1 |
필수입니다. Boolean . 평가하고 반환할 다른 인수를 결정합니다. |
argument2 |
필수입니다. Object . argument1 이 True 로 평가되면 평가되고 반환됩니다. |
argument3 |
필수입니다. Object . argument1 이 False 로 평가되거나 argument1 이 Nothing으로 평가되는 NullableBoolean 변수인 경우 평가되고 반환됩니다. |
세 개의 인수로 호출되는 If
연산자는 단락 평가를 사용한다는 점을 제외하면 IIf
함수처럼 작동합니다. IIf
함수는 항상 세 개의 인수를 모두 평가하는 반면, 세 개의 인수가 있는 If
연산자는 그중 두 개만 평가합니다. 첫 번째 If
인수가 평가되고 결과가 Boolean
값, True
또는 False
로 캐스팅됩니다. 값이 True
이면 argument2
가 평가되고 해당 값이 반환되지만 argument3
은 평가되지 않습니다. Boolean
식의 값이 False
인 경우 argument3
이 평가되고 해당 값이 반환되지만 argument2
는 평가되지 않습니다. 다음 예에서는 세 개의 인수가 사용될 때 If
의 사용을 보여 줍니다.
' 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"))
다음 예에서는 단락 평가의 값을 보여 줍니다. 이 예에서는 divisor
가 0인 경우를 제외하고 변수 number
를 변수 divisor
로 나누려는 두 번의 시도를 보여 줍니다. 이 경우 0이 반환되어야 하며 런타임 오류가 발생하므로 나누기를 수행하려고 시도해서는 안 됩니다. If
식은 단락 평가를 사용하므로 첫 번째 인수 값에 따라 두 번째 또는 세 번째 인수를 평가합니다. 첫 번째 인수가 true인 경우 제수는 0이 아니며 두 번째 인수를 평가하고 나누기를 수행하는 것이 안전합니다. 첫 번째 인수가 false이면 세 번째 인수만 평가되고 0이 반환됩니다. 따라서 제수가 0이면 나누기를 수행하려고 시도하지 않으며 오류 결과도 발생하지 않습니다. 그러나 IIf
는 단락 평가를 사용하지 않으므로 첫 번째 인수가 false인 경우에도 두 번째 인수가 평가됩니다. 이로 인해 런타임 0으로 나누기 오류가 발생합니다.
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))
연산자가 두 개의 인수로 호출된 경우
If
의 첫 번째 인수는 생략될 수 있습니다. 이렇게 하면 두 개의 인수만 사용하여 연산자를 호출할 수 있습니다. 다음 목록은 두 개의 인수를 사용하여 If
연산자를 호출하는 경우에만 적용됩니다.
부분
용어 | 정의 |
---|---|
argument2 |
필수입니다. Object . 참조 또는 null 허용 값 형식이어야 합니다. Nothing 이외의 것으로 평가되면 평가되어 반환됩니다. |
argument3 |
필수입니다. Object . argument2 가 Nothing 으로 평가되면 평가되어 반환됩니다. |
Boolean
인수가 생략되면 첫 번째 인수는 참조 또는 null 허용 값 형식이어야 합니다. 첫 번째 인수가 Nothing
으로 평가되면 두 번째 인수의 값이 반환됩니다. 다른 모든 경우에는 첫 번째 인수의 값이 반환됩니다. 다음 예에서는 이 평가가 작동하는 방식을 보여 줍니다.
' 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))
참고 항목
.NET