一旦变量在.Net语言中失去作用域,有没有办法“自动”运行终结/析构函数代码?在我看来,由于垃圾收集器在不确定的时间运行,所以一旦变量失去作用域,析构函数代码就不会运行。我意识到我可以从 IDisposable 继承并在我的对象上显式调用 Dispose,但我希望可能有一个更不干涉的解决方案,类似于非.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();
}
}