반응형
VB의 Null 검사
내가하고 싶은 것은 객체가 null인지 확인하는 것입니다.하지만 내가 무엇을하든 컴파일 NullReferenceException
하면 확인하려고 시도합니다! 내가 한 일은 다음과 같습니다.
If ((Not (comp.Container Is Nothing)) And (Not (comp.Container.Components Is Nothing))) Then
For i As Integer = 0 To comp.Container.Components.Count() - 1 Step 1
fixUIIn(comp.Container.Components.Item(i), style)
Next
End If
If ((Not IsDBNull(comp.Container)) And (Not IsDBNull(comp.Container.Components))) Then
For i As Integer = 0 To comp.Container.Components.Count() - 1 Step 1
fixUIIn(comp.Container.Components.Item(i), style)
Next
End If
If ((Not IsNothing(comp.Container)) And (Not IsNothing(comp.Container.Components))) Then
For i As Integer = 0 To comp.Container.Components.Count() - 1 Step 1
fixUIIn(comp.Container.Components.Item(i), style)
Next
End If
If ((Not (comp.Container Is DBNull.Value)) And (Not (comp.Container.Components Is DBNull.Value))) Then
For i As Integer = 0 To comp.Container.Components.Count() Step 1
fixUIIn(comp.Container.Components.Item(i), style)
Next
End If
VB 책을 살펴보고 여러 포럼을 검색했지만 작동해야하는 모든 것이 작동하지 않습니다! 수정 질문을 해주셔서 죄송 합니다만 알고 싶습니다.
아시다시피 디버거는 null 객체가 comp.Container
And
s를 AndAlso
s로 변경
표준 And
은 두 표현을 모두 테스트합니다. comp.Container가 Nothing이면 null 개체의 속성에 액세스하기 때문에 두 번째 식에서 NullReferenceException이 발생합니다.
AndAlso
논리적 평가를 단락시킵니다. comp.Container가 Nothing이면 두 번째 표현식이 평가되지 않습니다.
귀하의 코드는 필요 이상으로 복잡합니다.
교체 (Not (X Is Nothing))
와 X IsNot Nothing
외부 괄호를하고 생략 :
If comp.Container IsNot Nothing AndAlso comp.Container.Components IsNot Nothing Then
For i As Integer = 0 To comp.Container.Components.Count() - 1
fixUIIn(comp.Container.Components(i), style)
Next
End If
훨씬 더 읽기 쉽습니다. … 또한 중복 Step 1
및 아마도 중복을 제거했습니다 .Item
.
그러나 (주석에서 지적했듯이) 인덱스 기반 루프는 어쨌든 유행하지 않습니다. 꼭 필요한 경우가 아니면 사용하지 마십시오. 사용 For Each
하는 대신 :
If comp.Container IsNot Nothing AndAlso comp.Container.Components IsNot Nothing Then
For Each component In comp.Container.Components
fixUIIn(component, style)
Next
End If
참고 URL : https://stackoverflow.com/questions/5583112/null-check-in-vb
반응형
'UFO ET IT' 카테고리의 다른 글
.NET에서 System.String.Copy를 사용하는 것은 무엇입니까? (0) | 2020.11.24 |
---|---|
PHP에서 친숙한 URL을 만드는 방법은 무엇입니까? (0) | 2020.11.24 |
cmake 변수 범위, add_subdirectory (0) | 2020.11.24 |
액세스 토큰없이 Facebook Graph API를 사용하여 공개 페이지 상태 가져 오기 (0) | 2020.11.24 |
(…()) vs. (…)() in javascript closures (0) | 2020.11.24 |