gpt4 book ai didi

c# - 集合类和 IDisposable 接口(interface)

转载 作者:太空宇宙 更新时间:2023-11-03 19:04:59 24 4
gpt4 key购买 nike

我最近一直在阅读有关 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)情况是,如果它被设计为基类并且您期望一些派生类需要处理......这是一个更复杂的场景。)

关于c# - 集合类和 IDisposable 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29606791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com