如果我有一个Dispose方法,我必须实现IDisposable接口吗?

4

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


1
只有在需要的情况下才使用它... - cnd
2
如果不想要一个IDisposable对象,请不要调用它的Dispose方法,这会让人感到困惑。由于C#是名义类型系统,如果您希望对象符合IDisposable接口,则需要实现IDisposable接口;方法并不会给对象赋予类型。 - user2864740
3
总体设计上的疑虑: 你确定中止线程是正确的做法吗?(几乎总是不是正确的做法。)能否改用协作式线程关闭呢? - chwarr
正如@user2864740所提到的,如果您不打算实现IDisposable,则避免为该方法使用此名称。要了解应遵循的最佳做法,请阅读《框架设计准则》一书,或者学习分析工具,例如Gendarme(http://www.mono-project.com/Gendarme.Rules.Design)。 - Lex Li
1个回答

1
如果您实现了 IDisposable 接口,那么您的类对象可以在使用块中使用,该块会自动隐式地调用 Dispose 方法。

来自 JaredPar 的 答案

只有两个原因需要在类型上实现 IDisposable:

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

在没有资源的类上实现 IDisposable 有什么好处吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接