programing

VB.NET 'If' 문에 'Or' 조건부가 모두 평가되었습니까?

randomtip 2023. 5. 21. 17:21
반응형

VB.NET 'If' 문에 'Or' 조건부가 모두 평가되었습니까?

간단한 질문입니다. 가장 빠르고 쉬운 대답은 관련 코드를 재정렬하는 것입니다. 하지만 어디 보자...

그래서 저는.IfVB.NET을 사용하여 다시 작성된 문(C#로 작성된 전체 작동 솔루션의 일부인 코드 조각).VB.NET을 알고 있습니다.IIf(a, b, c)방법은 두 가지 모두를 평가합니다.b그리고.a첫 번째 평가의 진실성에 관계없이, 그러나 이것은 내 표준 구성에서도 마찬가지인 것 같습니다.

If (example Is Nothing Or example.Item IsNot compare.Item) Then
    'Proceed
End If

또는 더 적절하게는:

If (example Is Nothing Or Not example.Item = compare.Item) Then
    'Proceed
End If

여기, 만약에example이라Nothing(null) 그럼 아직도 나는.NullReferenceException제 잘못인가요, 아니면 VB.NET의 변덕에 제가 참아야 하는 것인가요?

이러한 방식으로 정의된다는 점에서 고객의 "잘못"이므로 다음과 같은 행동을 기대해야 합니다.

부울 비교에서 Or 연산자는 항상 프로시저 호출을 포함할 수 있는 두 식을 평가합니다.OrEs 연산자(Visual Basic)는 단락을 수행합니다. 즉, 식 1이 True이면 식 2가 평가되지 않습니다.

하지만 당신은 그것을 견뎌낼 필요가 없습니다.를 사용하여 단락 동작을 수행할 수 있습니다.

따라서 다음을 원할 수 있습니다.

If (example Is Nothing OrElse Not example.Item = compare.Item) Then
    'Proceed
End If

읽히진 않지만, 효과가 있을 겁니다

OrElse 의 약어는 다음과 같습니다.

언급URL : https://stackoverflow.com/questions/4723249/vb-net-if-statement-with-or-conditional-has-both-sides-evaluated

반응형