В С#, foreach автоматически вызывает Dispose на любом объекте, реализующем IDisposable?
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();
}