programing

VB에 조건부 3진 연산자가 있습니까?인터넷?

starjava 2023. 4. 12. 21:41
반응형

VB에 조건부 3진 연산자가 있습니까?인터넷?

Perl(및 기타 언어)에서는 조건부 3진 연산자는 다음과 같이 나타낼 수 있습니다.

my $foo = $bar == $buz ? $cat : $dog;

VB에 유사한 연산자가 있습니까?인터넷?

버전에 따라 다르죠IfVB의 오퍼레이터.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는 항상 VB에서 사용할 수 있으며 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#에 상당하는 연산자는 컴파일에 실패합니다.

참고로 If와 IIf차이는 다음과 같습니다.

IIf(조건,부분, 거짓 부분):

  • 이것은 이전의 VB6/VBA 기능입니다.
  • 함수는 항상 Object 유형을 반환하기 때문에 선택한 객체의 메서드 또는 속성을 사용하려면 DirectCast, CType 또는 Convert.*를 사용하여 다시 캐스트해야 합니다.원래 유형으로 기능합니다.
  • 따라서 true-part와 false-part가 다른 타입이라면 상관없습니다.결과는 어차피 오브젝트일 뿐입니다.

If(조건, true-part, false-part):

  • 이것은 새로운 VB입니다.NET 기능
  • 결과 유형은 선택한 부품의 유형(참 또는 거짓 부분)입니다.
  • Strict Mode가 켜져 있고 두 부품이 다른 유형이면 이 방법은 작동하지 않습니다.Strict 모드에서는 같은 타입이어야 합니다.그렇지 않으면 예외가 발생합니다.
  • 다른 타입의 2개의 부품이 필요한 경우는, 엄밀한 모드를 오프(또는 IIf 를 사용)합니다.
  • Strict Mode에서 다른 타입의 오브젝트가 허용되지만 동일한 베이스에서 상속되거나 동일한 인터페이스를 구현하는지 여부는 아직 시도하지 않았습니다.이 문제에 대해서는, Microsoft 의 메뉴얼은 그다지 도움이 되지 않습니다.여기 있는 누군가가 알고 있을지도 몰라.
If(<expression>, <expressionIfNothing>)

if<expression>참조 값 또는 아무것도 아닌 Nullable 값에 대해 평가하면 함수는 해당 값을 반환합니다.않으면 하여 반환한다.<expressionIfNothing>인텔리센스)


이것은 특정 값이 존재하는지 확인하고 해당 값을 대체하지 않을 경우 유용합니다.

예:

If(cat, dog)

여기서 고양이가 늘이 아니면 고양이를 돌려준다.무효일 경우 개를 돌려보냅니다.대부분의 경우 이 시나리오에서는 3진 연산자를 사용합니다.단, 테스트 중인 값을 반환하지 않으려면 대신 이 값을 사용해야 합니다.

If(condition, cat(true), dog(false))

언급URL : https://stackoverflow.com/questions/576431/is-there-a-conditional-ternary-operator-in-vb-net

반응형