En C#, ¿Foreach llama automáticamente a Dispose en cualquier objeto que implemente IDisposable?¿Foreach llama automáticamente a Dispose?
http://msdn.microsoft.com/en-us/library/aa664754(v=vs.71).aspx parece indicar que lo hace:
* De lo contrario, la expresión de recogida es de un tipo que implementa System.IEnumerable, y la expansión de la instrucción foreach es: Copiar
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();
}
¿Se refiere al _enumerable_ o al _enumerator_? – zneak
@zneak: es el enumerador. Un enumerable simplemente proporciona una forma de recuperar un enumerador. –
Gracias Matt! Es tarde donde estoy y no estaba seguro de si estaba leyendo el documento msdn correctamente, necesitaba otra opinión. – jim