我最近一直在阅读有关 IDisposable 接口(interface)的内容(该主题非常有用 Proper use of the IDisposable interface )以及 using 语句的用法(主题 Uses of "using" in C# )。然后我开始思考是否应该以某种方式从内存中释放我自己的集合类。
class User{
private string username {set;get;}
private string password {set;get;}
...
}
它应该实现 IDisposable 接口(interface)吗?
class User : IDisposable
{
...
public void Dispose()
{
this.Dispose();
}
}
所以它可以从内存中释放出来?还是 GC 会自动执行,我什至不应该为此烦恼。
据我所知,释放数据库连接等非托管资源很重要,但那些集合类呢?因为我经常使用它们,所以它真的开始困扰我。
tl;dr; 我应该在 User 类上实现 IDisposable 吗?
亲切的问候。
编辑:感谢大家的回复!
请您参考如下方法:
Or does GC do it automaticly and I shouldn't even bother about it.
这个。除非您拥有非托管资源(直接或通过引用其他一次性资源),否则您几乎肯定不应该实现 IDisposable。
您当前的实现只会调用自身:
public void Dispose()
{
this.Dispose();
}
...所以假设您真的不想调用 this.Dispose(),当 Dispose()< 时您会做什么 被称为?这不像处置会导致垃圾收集 - 那么您想采取什么行动?如果答案是“无”,那么您可能不应该实现 IDisposable。 (这里的异常(exception)情况是,如果它被设计为基类并且您期望一些派生类需要处理......这是一个更复杂的场景。)
