Есть ли способ "автоматически" запустить код завершения / деструктора, как только переменная потеряет область видимости в языке .Net? Мне кажется, что, поскольку сборщик мусора работает в неопределенное время, код деструктора не запускается, как только переменная теряет область видимости. Я понимаю, что могу унаследовать от IDisposable и явно вызывать Dispose для моего объекта, но я надеялся, что может быть более простое решение, подобное тому, как non-.Net C ++ обрабатывает уничтожение объекта.
Желаемое поведение (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();
}
}