수색…


IF ... Then ... Else

Dim count As Integer = 0
Dim message As String

If count = 0 Then
    message = "There are no items."
ElseIf count = 1 Then
    message = "There is 1 item."
Else
    message = "There are " & count & " items."
End If

연산자

9.0
If(condition > value, "True", "False")

우리는 If 연산자 대신 If ... Then ... Else..End If 문을 사용할 수 있습니다.

다음 예제를 고려하십시오.

If 10 > 9 Then
     MsgBox("True")
Else
     MsgBox("False")
End If

와 같다

MsgBox(If(10 > 9, "True", "False"))

If()단락 평가를 사용 If() 즉, 사용 된 인수 만 평가한다는 의미입니다.) 조건 (또는 거짓이면 Nullable 하지 Nothing ), 제 대안은 전혀 계산되지 않으며, 부작용 전혀 관찰되지 않는다. 이것은 condition?a:b 의 형태로 C #의 삼항 연산자 와 실질적으로 동일 condition?a:b .

이는 예외를 피할 때 특히 유용합니다.

Dim z As Integer = If(x = 0, 0, y/x)

우리는 모두 0으로 나누면 예외가 발생하지만 If() 는 조건이 이미 보장 한 식으로 만 단락함으로써이를 방지하는 것으로 간주됩니다.

다른 예시:

Dim varDate as DateTime = If(varString <> "N/A", Convert.ToDateTime(varString), Now.Date)

경우 varString <> "N/A" 평가 False , 그것은 할당한다 varDate 등의 값 Now.Date 첫번째 식을 평가없이.

9.0

VB의 이전 버전에는 If() 연산자가 없으므로 IIf() 내장 함수로 처리해야합니다. 그것은 작동자가 아닌 기능이기 때문에 단락을 일으키지 않습니다 . 모든 표현식은 성능 저하, 상태 변경 및 예외 발생과 같은 모든 부작용을 고려하여 평가됩니다. 예외를 피하는 위의 두 예제 모두 IIf 로 변환하면 throw됩니다. 이러한 부작용 중 하나라도 문제가 발생하면 인라인 조건을 사용할 방법이 없습니다. 대신 If..Then 블록을 평소와 같이 사용하십시오.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow