답변:
버전에 따라 다릅니다. If
VB.NET 2008 의 연산자는 3 진 연산자 (널 병합 처리 연산자)입니다. 이것은 2008 년 이전에 소개되었지만 사용할 수 없었습니다. 추가 정보는 다음과 같습니다. Visual Basic If 공고
예:
Dim foo as String = If(bar = buz, cat, dog)
[편집하다]
2008 년 이전에는 위에서 설명한 운영자 IIf
와 거의 동일하게 작동했습니다 If
.
예:
Dim foo as String = IIf(bar = buz, cat, dog)
Iif
항상 type의 객체를 반환하는 Object
반면, If(bool, obj, obj)
strict on 옵션을 사용하여 유형을 확인할 수 있습니다. ( Dim var As Integer = Iif(true, 1, 2)
쉽게 쓸 수 있기 때문에 옵션 엄격으로 컴파일되지 않습니다 Dim var As Integer = Iif(true, new Object(), new Object())
. Dim var As Integer = If(true, 1, 2)
반환 된 유형을 확인하기 때문에 옵션 엄격으로 작성할 수 있습니다 .)
iif는 VB6에서도 가능합니다.
Dim foo as String = iif(bar = buz, cat, dog)
이는 실제 연산자가 아니라 Microsoft.VisualBasic 네임 스페이스의 함수입니다.
If ()가 가장 비슷하지만 주의하십시오 "Option Strict off"를 설정 한 경우 암시 적 변환이 진행되는 것을
예를 들어, 조심하지 않으면 다음과 같은 시도를 할 수 있습니다.
Dim foo As Integer? = If( someTrueExpression, Nothing, 2)
"foo"에 0의 값을 줄 것이다!
내 생각 엔 '?' C #에서 동등한 연산자가 컴파일에 실패합니다.
Dim foo As Integer? = If( someTrueExpression, New Integer?, 2)
입니다.
Option Strict On
. 그 이유이다 Nothing
VB.NET는 C #에 동등에의 default(T)
발보다는 null
.
Integer?
그것은이 널 (NULL)의 의미 - 볼 stackoverflow.com/questions/3628757/make-an-integer-null
CType(Nothing, DateTime?
)을.