我找不到这个问题的答案。
只是出于好奇,为什么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
。