変数が.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();
}
}