반응형
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
반응형
'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 |