我找不到这个问题的答案。
只是出于好奇,为什么XmlNodeList 类在 .NET 4.5 中实现 IDisposable 而在以前的版本中没有实现?
IEnumerator<T>很可能出于与实现IDisposable但IEnumerator不实现相同的原因- 早期版本是在作者考虑可能需要清理的情况之前编写的,但返回此类实现的工厂可能不知道这种需要。例如,一个类可能接受一个文件名并XmlNodeList从该文件中提供一个“live”;的IDisposable.Dispose方法XmlList将关闭基础文件。如果接口或抽象类的大部分用户必须使用如下代码:
IDisposable asDispos = thing as IDisposable;
if (asDispos != null)
asDispos.Dispose();
如果其中许多不应该实现,那么这个东西可能应该实现IDisposable自己,因为无条件地调用IDisposable.Dispose一个已知实现IDisposable的类比尝试强制转换一个可能实现也可能不实现的类更快IDisposable.Dispose。