Al trabajar con archivos en C#, estoy condicionado a pensar en liberar los recursos asociados. Por lo general, esta es una declaración de uso, a menos que sea un método de conveniencia de un trazador de líneas como File.ReadAllLines, que abrirá y cerrará el archivo por mí.Cuando File.ReadLines libera recursos
.Net 4.0 ha introducido el método de conveniencia File.ReadLines. Esto devuelve un IEnumerable y se factura como una forma más eficiente de procesar un archivo; evita almacenar todo el archivo en la memoria. Para hacer esto, supongo que hay alguna lógica de ejecución diferida en el enumerador.
Obviamente, dado que este método devuelve un IEnumerable, no y IDisposable, no puedo ir con mi reacción visceral de una declaración using.
Mi pregunta es: Teniendo esto en cuenta, ¿hay algún inconveniente en la desasignación de recursos con este método?
¿Llamar a este método significa que la liberación de los bloqueos de archivo asociados no es determinista?
En realidad, IEnumerator no implementa IDisposable. Pero muchas * implementaciones * de IEnumerator implementan IDisposable, y el bucle foreach, y los métodos de extensión LINQ, todos hacen un molde 'as' para ver si el enumerador implementa IDisposable, y si es así llaman a Dispose. –
Corrección: el IEnumerator no genérico no implementa IDisposable, pero sí el genérico ('IEnumerator'). –
Ah, tienes razón. Gah, tonto error, déjame editar la respuesta. –