을 using
문의 목적은 객체에 Dispose
를 호출하는 것입니다 IDisposable
을 구현합니다. 수동으로 수행하는 방법은 try...finally
문이지만 훨씬 더 바람직하지 않습니다.
이 함수를 종료해도 Dispose
이 호출되지 않습니다. 지역 변수는 범위를 벗어나 개체를 더 이상 참조하지 않습니다. 객체에 더 이상 참조가 없다는 것은 즉각적인 반응을 일으키지 않습니다. GC 번호 은 일 수 있습니다.
GC가 수집 할 때까지 네이티브 리소스가 남아 있기 때문에 훨씬 나중에 가능합니다. 또는 Dispose
내부에서 제거 된 해당 객체에 대한 다른 참조가있는 경우 전혀 수집되지 않을 수도 있습니다. 보시다시피
{
ResourceType resource = expression;
try {
statement;
}
finally {
if (resource != null) ((IDisposable)resource).Dispose();
}
}
finally
무슨 일이 일어나는 상관없이 처분 호출을 담당 : 참조 형식에
Using statement in the VB.net specification
그리고 C#에서
(VB.net은 매우 유사해야합니다)
using
는에 해당
statement
. 마지막으로 함수를 종료하거나 예외를 throw하더라도 실행됩니다.
OutOfMemory, StackOverflow 및 강제 app-domain 언로드와 같은 단지 몇 가지 재앙적인 오류는이를 실행하지 않습니다.
.NET에서 프로그래밍 한 적이 한 번도 없지만 그 주제가 일주일에 세 번 나옵니다. 평균 .NET 프로그래머가 자신의 언어에 대해이 사실을 조금 알고 있습니까? – delnan