4

我找不到这个问题的答案。

只是出于好奇,为什么XmlNodeList 类在 .NET 4.5 中实现 IDisposable 而在以前的版本中没有实现?

4

1 回答 1

1

IEnumerator<T>很可能出于与实现IDisposableIEnumerator不实现相同的原因- 早期版本是在作者考虑可能需要清理的情况之前编写的,但返回此类实现的工厂可能不知道这种需要。例如,一个类可能接受一个文件名并XmlNodeList从该文件中提供一个“live”;的IDisposable.Dispose方法XmlList将关闭基础文件。如果接口或抽象类的大部分用户必须使用如下代码:

IDisposable asDispos = thing as IDisposable;
if (asDispos != null)
  asDispos.Dispose();

如果其中许多不应该实现,那么这个东西可能应该实现IDisposable自己,因为无条件地调用IDisposable.Dispose一个已知实现IDisposable的类比尝试强制转换一个可能实现也可能不实现的类更快IDisposable.Dispose

于 2013-01-21T19:02:29.197 回答