Автоматически ли foreach вызывает Dispose?

В C #, вызывает ли 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();
}

58
задан zneak 13 February 2011 в 04:23
поделиться