等价于 C++ 的析构函数是IDisposable
和Dispose()
方法,通常在using
块中使用。
请参阅http://msdn.microsoft.com/en-us/library/system.idisposable.aspx
您所说的析构函数更好地称为Finalizer
.
下面介绍如何使用 IDisposable。注意Dispose()
不是自动调用的;您可以做的最好的事情是使用using
which将导致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();
}