반응형
VB.NET 'If' 문에 'Or' 조건부가 모두 평가되었습니까?
간단한 질문입니다. 가장 빠르고 쉬운 대답은 관련 코드를 재정렬하는 것입니다. 하지만 어디 보자...
그래서 저는.If
VB.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
반응형
'programing' 카테고리의 다른 글
VS 2008 중단점은 현재 적중되지 않습니다.이 문서에 대해 로드된 기호가 없습니다. (0) | 2023.05.21 |
---|---|
Node.js의 HTML 파서 (0) | 2023.05.21 |
HttpClient 요청에 대한 사용자 정의 헤더 (0) | 2023.05.21 |
메모리의 Python 목록 크기 (0) | 2023.05.21 |
파이썬에서 집합을 목록으로 변환하는 방법은 무엇입니까? (0) | 2023.05.21 |