为什么代码分析器建议处理IDisposable字段?

这个问题在这里已经有了答案:

  • 为什么总是需要在具有IDisposable成员的对象上实现IDisposable? 7个答案

  • 有2个理由实现IDispose:
    1.处理非托管资源 - 这是关于清理的内容 (非托管资源)
    2.能够控制什么时候管理资源被释放 - 这是关于什么时候事情被清理
    一次性使用证明文件非常重视1,但实际上大多数实施文件约为2。
    在你的例子中就是这种情况 - 你所拥有的资源被托管(通过包装非托管位图句柄的托管Bitmap类)。 你可以将它置于你的dispose中,以使你的类的用户能够控制何时释放位图(不是如果它被释放 - 最终,当GC感觉像它时)。


    也许会。 但当? 这个类不能可靠地使用。 如果我按顺序创建10.000,则10.000个未配置的位图将在内存中,等待惰性垃圾收集器调用终结器(希望)调用Dispose 。 也许今天。 明天吧。 但作为开发人员,我无法控制这一点。 如果你正确地实现了IDisposable ,我可以简单地在它们中的每一个周围都有一个using块,并且我永远不会使用比单个Bitmap资源更多的资源。

    链接地址: http://www.djcxy.com/p/54323.html

    上一篇: Why code analyzers recommend to dispose IDisposable fields?

    下一篇: Why should we call SuppressFinalize when we don't have a destructor