foreach会自动调用Dispose吗?

2024-04-20

在 C# 中,foreach 是否会自动对任何实现 IDisposable 的对象调用 Dispose?

http://msdn.microsoft.com/en-us/library/aa664754(v=vs.71).aspx http://msdn.microsoft.com/en-us/library/aa664754(v=vs.71).aspx似乎表明确实如此:

*否则,集合表达式是实现System.IEnumerable的类型,并且foreach语句的扩展为: 复制

IEnumerator enumerator = 
        ((System.Collections.IEnumerable)(collection)).GetEnumerator();
try {
   while (enumerator.MoveNext()) {
      ElementType element = (ElementType)enumerator.Current;
      statement;
   }
}
finally {
   IDisposable disposable = enumerator as System.IDisposable;
   if (disposable != null) disposable.Dispose();
}

是的,如果 foreach 实现了 IDisposable,它将在枚举器上调用 Dispose()。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

foreach会自动调用Dispose吗? 的相关文章

随机推荐