集合类和IDisposable接口

Das*_*sky 1 c# memory garbage-collection dispose idisposable

我最近一直在阅读关于IDisposable接口(这个主题非常有用,正确使用IDisposable接口)以及use语句的使用(主题在C#中使用"using").然后我开始想知道如果我应该以某种方式从内存中释放我自己的集合类.

class User{
    private string username {set;get;}
    private string password {set;get;}
    ...
}
Run Code Online (Sandbox Code Playgroud)

它应该实现IDisposable接口吗?

class User : IDisposable
{
    ...
    public void Dispose()
    {
        this.Dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)

所以它可以从内存中解放出来?或者GC是否自动完成,我甚至不应该为此烦恼.

据我所知,释放非托管资源(如数据库连接等)很重要,但这些集合类呢.因为我经常使用它真的开始让我烦恼.

TL;博士; 我应该在User类上实现IDisposable吗?

亲切的问候.


编辑:感谢大家的回复!

Jon*_*eet 6

或者GC是否自动完成,我甚至不应该为此烦恼.

这个.除非你有非托管资源(直接或通过引用其他一次性的东西),你几乎肯定不应该实现IDisposable.

您当前的实现只会自称:

public void Dispose()
{
    this.Dispose();
}
Run Code Online (Sandbox Code Playgroud)

...所以假设你真的不想叫this.Dispose(),什么你想要的时候做的Dispose()是叫什么?它不像处理导致垃圾收集 - 所以你想采取什么行动?如果答案是"没有",那么你可能不应该实施IDisposable.(这里的例外是如果它被设计为基类,并且您期望某些派生类需要处理......这是一个更复杂的场景.)