다음을 통해 공유


If 연산자(Visual Basic)

단락 평가를 사용하여 두 값 중 하나를 조건부로 반환합니다. 연산자는 If 세 개의 인수 또는 두 개의 인수를 사용하여 호출할 수 있습니다.

문법

If( [argument1,] argument2, argument3 )

세 개의 인수를 사용하여 호출된 연산자

세 개의 인수를 사용하여 호출되는 경우 If 첫 번째 인수는 로 캐스팅할 수 있는 값으로 Boolean계산되어야 합니다. 이 Boolean 값은 다른 두 인수 중 평가 및 반환되는 인수를 결정합니다. 다음 목록은 세 개의 인수를 사용하여 연산자를 If 호출하는 경우에만 적용됩니다.

부분

기간 정의
argument1 필수 사항입니다. Boolean; 평가하고 반환할 다른 인수를 결정합니다.
argument2 필수 사항입니다. Object; 평가되고 반환되는 경우 argument1True.
argument3 필수 사항입니다. Object; 평가되거나 Nothing으로 False 계산되는 NullableBoolean 변수인 경우 argument1 평가되고 반환 argument1 됩니다.

If 세 개의 인수를 사용하여 호출되는 연산자는 단락 평가를 사용한다는 점을 제외하고 함수처럼 IIf 작동합니다. 함수는 IIf 항상 세 개의 인수를 모두 계산하는 반면 If 세 개의 인수가 있는 연산자는 두 인수만 평가합니다. 첫 번째 If 인수가 계산되고 결과가 값 True 으로 Boolean 캐스팅됩니다False. 값이면 True평가 argument2 되고 해당 값이 반환되지만 argument3 평가되지는 않습니다. 식의 Boolean 값이 Falseargument3 계산되고 해당 값이 반환되지만 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"))

다음 예제에서는 단락 평가 값을 보여 줍니다. 이 예제에서는 0인 경우 divisor 를 제외하고 변수를 변수 divisornumber 로 나누려는 두 가지 시도를 보여 줍니다. 이 경우 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; 참조 또는 nullable 값 형식이어야 합니다. 평가되고 반환되는 값은 .가 아닌 Nothing다른 항목으로 평가됩니다.
argument3 필수 사항입니다. Object; 평가되고 반환되는 경우 argument2Nothing.

인수를 Boolean 생략하면 첫 번째 인수는 참조 또는 nullable 값 형식이어야 합니다. 첫 번째 인수가 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))

참고하십시오