找出C#中实现Close()方法的所有类?

时间:2016-09-17 11:17:08

标签: c#

我试图找到C#中实现Close()的所有课程。例如,Socket中的StreamReaderStreamWriterC#类包含用于关闭资源的Close()方法。而且,我注意到有些类实现了IDisposable。包含Dispose()的所有类都包含Close()

1 个答案:

答案 0 :(得分:1)

规则违规试图告诉您在try中初始化的类实现了IDisposable,并且您没有任何调用Dispose来回收其非托管资源的代码。实现IDisposable的类实际上“通知您”需要明确清理它们。这是.Net中非常常见的模式。

您可以执行以下操作:

SomeClassThatImplementsIDisposable x = null;
try
{
  x = new SomeClassThatImplementsIDisposable();
  //--> call methods on x... 
}
finally
{
  x.Dispose();
}

...但是,更常见的是使用using块:

using ( var x = new SomeClassThatImplementsIDisposable() )
{
  //--> call methods on x...
}

...这会导致编译器从您的使用块中构建try/finally块。

所以...这不是你应该关注的Close方法。当你违反规则时,你应该做以上两件事之一(最好按照惯例)。

此外,您并不需要关心所有具有某种方法的类。您只需要运行静态分析,它会告诉您何时没有清理过。你最终会对这种模式非常熟悉。