C++ デストラクタに相当するのはIDisposable
、ブロックDispose()
でよく使用されるメソッドです。using
http://msdn.microsoft.com/en-us/library/system.idisposable.aspxを参照してください。
あなたがデストラクタと呼んでいるものは、Finalizer
.
IDisposable の使用方法は次のとおりです。Dispose()
は自動的に呼び出されないことに注意してください。あなたができる最善のことは、ブロックが最後に到達する前にブロック内に例外があったとしても、呼び出される原因となるwhichをusing
使用することです。Dispose()
using
public class MyClass: IDisposable
{
public MyClass()
{
//Do the work
}
public void Dispose()
{
// Clean stuff up.
}
}
次に、次のように使用できます。
using (MyClass c = new MyClass())
{
// Do some work with 'C'
// Even if there is an exception, c.Dispose() will be called before
// the 'using' block is exited.
}
.Dispose()
必要に応じて、自分自身を明示的に呼び出すことができます。唯一のポイントは、何らかの理由で実行がブロックを離れたときにusing
呼び出しを自動化することです。.Dispose()
using
詳細については、こちらを参照してください: http://msdn.microsoft.com/en-us/library/yh598w02%28v=vs.110%29.aspx
基本的に、using
上記のブロックは次と同等です。
MyClass c = new MyClass();
try
{
// Do some work with 'C'
}
finally
{
if (c != null)
((IDisposable)c).Dispose();
}