Rob*_*vey 5 c# dispose idisposable
我有一个具有一次性物体作为成员的物体.
public class MyClass
{
private MyDisposableMember member;
public DoSomething
{
using (member = new MyDisposableMember())
{
// Blah...
}
}
}
Run Code Online (Sandbox Code Playgroud)
可以有很多方法MyClass,都需要using声明.但是,如果我这样做呢?
public class MyClass
{
private MyDisposableMember member = new MyDisposableMember();
public DoSomething
{
// Do things with member :)
}
~MyClass()
{
member.Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,member正在处理析构函数.这会有用吗?这种方法有什么问题吗?
Ree*_*sey 11
理想情况下,Dispose()应该在完成之前调用.遵循典型的dispose模式会更好,并允许用户正确地Dispose()对象,并且如果尚未调用 dispose,则让终结器处理它.
在这种情况下,由于您正在封装IDisposable,因此您根本不需要实现终结器.(在最终确定时,您的封装成员将最终确定,因此无需最终确定您的对象 - 它只会增加开销.)有关详细信息,请阅读我撰写的关于封装IDisposable的博客文章.
| 归档时间: |
|
| 查看次数: |
1576 次 |
| 最近记录: |