【发布时间】:2011-02-13 04:15:48
【问题描述】:
在 C# 中,foreach 会自动对任何实现 IDisposable 的对象调用 Dispose 吗?
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();
}
【问题讨论】:
标签: c# foreach idisposable