【问题标题】:If I have a Dispose method, must I implement IDisposable?如果我有一个 Dispose 方法,我必须实现 IDisposable 吗?
【发布时间】:2013-12-18 06:04:35
【问题描述】:

我有一个包含Dispose 方法的类。在这种方法中,我中止了一个线程。是否需要实现IDisposable接口?

【问题讨论】:

  • 仅在您需要时...
  • (如果不想要一个 IDisposable 对象,请不要称它为 Dispose。这很令人困惑。由于 C# 是 nominally typed,如果您希望对象符合,则需要实现 IDisposable IDisposable;方法不提供对象类型。)
  • 一般设计疑虑:您确定中止线程是正确的做法吗? (几乎总是,这不是正确的做法。)您可以使用协作线程关闭来代替吗?
  • 正如@user2864740 提到的,如果您不打算实现 IDisposable,请避免将此名称用于该方法。要了解您应该遵循的最佳实践,请阅读《框架设计指南》一书,或学习分析工具,例如 Gendarme,mono-project.com/Gendarme.Rules.Design

标签: c#


【解决方案1】:

如果你实现了IDisposable 接口,那么你的类对象可以用于使用自动隐式调用Dispose 方法的块。

来自 JaredPar 的 answer

在一个类型上实现 IDisposable 只有两个原因

  • 该类型包含在不再使用该类型时必须释放的本机资源
  • 该类型包含 IDisposable 类型的字段

Is there any benefit to implementing IDisposable on classes which do not have resources?

【讨论】:

    猜你喜欢
    • 2011-03-08
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 2017-10-27
    相关资源
    最近更新 更多