반응형
널 오브젝트와 함께 명령문 사용
using
(잠재적으로) 널 오브젝트 에서 명령문 을 사용하는 것이 안전 합니까?
다음 예제를 고려하십시오.
class Test {
IDisposable GetObject(string name) {
// returns null if not found
}
void DoSomething() {
using (IDisposable x = GetObject("invalid name")) {
if (x != null) {
// etc...
}
}
}
}
Dispose
객체가 null이 아닌 경우에만 호출 되는 것이 보장 NullReferenceException
됩니까?
예, Dispose()
널이 아닌 오브젝트에서만 호출됩니다.
http://msdn.microsoft.com/en-us/library/yh598w02.aspx
의 확장 using
은 객체가 null
호출하기 전에 객체가 아닌지 확인 Dispose
하므로 안전합니다.
귀하의 경우 다음과 같은 것을 얻을 수 있습니다 :
IDisposable x = GetObject("invalid name");
try
{
// etc...
}
finally
{
if(x != null)
{
x.Dispose();
}
}
당신은 그것을 좋아해야합니다 :
using ((IDisposable)null) { }
여기에는 예외가 없습니다.
사이드 참고 : 함께이 실수하지 않습니다 foreach
및 IEnumerable
경우 예외가 발생합니다.
예, 참조를 폐기하기 전에 null 검사가 수행됩니다. Reflector에서 코드를보고 자신을 검사 할 수 있습니다.
내 경험에 따라 null 참조 예외가 발생하지 않습니다. 단순히 무시됩니다.
참고 URL : https://stackoverflow.com/questions/2522822/using-statement-with-a-null-object
반응형
'IT story' 카테고리의 다른 글
이멕스를 IDE로 사용하기 (0) | 2020.05.29 |
---|---|
얼굴 인식 라이브러리 [닫힘] (0) | 2020.05.29 |
로컬 자식 분기가 있는지 확인하는 더 좋은 방법이 있습니까? (0) | 2020.05.29 |
C # 확장 메서드를 사용하여 연산자 오버로드 (0) | 2020.05.29 |
Android : 뷰에 maxHeight가없는 이유는 무엇입니까? (0) | 2020.05.29 |