변수가 .Net 언어로 범위를 잃는 즉시 "자동으로"최종/소멸자 코드를 실행할 수있는 방법이 있습니까? 가비지 콜렉터가 불확정 한 시간에 실행되기 때문에 변수가 범위를 잃 자마자 소멸자 코드가 실행되지 않는 것으로 보입니다. IDisposable에서 상속받을 수 있고 명시 적으로 내 객체에 Dispose를 호출 할 수 있다는 것을 알았지 만, non -.Net C++에서 객체 파괴를 처리하는 것과 같은 더 손쉬운 솔루션이있을 수 있기를 기대했습니다.오브젝트가 .NET에서 범위를 벗어날 때 코드를 실행할 수 있습니까?
원하는 동작 (C 번호) :
public class A {
~A { [some code I would like to run] }
}
public void SomeFreeFunction() {
SomeFreeSubFunction();
// At this point, I would like my destructor code to have already run.
}
public void SomeFreeSubFunction() {
A myA = new A();
}
바람직하지 :
public class A : IDisposable {
[ destructor code, Dispose method, etc. etc.]
}
public void SomeFreeFunction() {
SomeFreeSubFunction();
}
public void SomeFreeSubFunction() {
A myA = new A();
try {
...
}
finally {
myA.Dispose();
}
}
("+1") "사용"은 Dispose 메서드를 사용하기위한 약식이며 특히 소멸자를 사용하고 메모리에서 개체를 제거하는 데 사용하지 않는 것이 좋습니다. –