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()널이 아닌 오브젝트에서만 호출됩니다.
답변
의 확장 using은 객체가 null호출하기 전에 객체가 아닌지 확인 Dispose하므로 안전합니다.
귀하의 경우 다음과 같은 것을 얻을 수 있습니다 :
IDisposable x = GetObject("invalid name");
try
{
    // etc...
}
finally
{
    if(x != null)
    {
        x.Dispose();
    }
}
답변
당신은 그것을 좋아해야합니다 :
using ((IDisposable)null) { }
여기에는 예외가 없습니다.
사이드 참고 : 함께이 실수하지 않습니다 foreach및 IEnumerable경우 예외가 발생합니다.
답변
예, 참조를 폐기하기 전에 null 검사가 수행됩니다. Reflector에서 코드를보고 자신을 검사 할 수 있습니다.
답변
내 경험에 따라 null 참조 예외가 발생하지 않습니다. 단순히 무시됩니다.
답변
