При работе с файлами на C# я вынужден думать о освобождении связанных ресурсов. Обычно это оператор using, если только он не поддерживает метод однострочного выравнивания , например File.ReadAllLines, который откроет и закроет файл для меня.Когда File.ReadLines освобождает ресурсы
.Net 4.0 ввел удобный метод File.ReadLines. Это возвращает IEnumerable и объявляется как более эффективный способ обработки файла - он позволяет избежать хранения всего файла в памяти. Для этого я предполагаю, что в счетчике есть некоторая отложенная логика выполнения.
Очевидно, так как этот метод возвращает IEnumerable, not и IDisposable, я не могу перейти с моей реакцией на использование выражения.
Мои вопросы: Имея это в виду, есть ли какие-либо проблемы с освобождением ресурсов с помощью этого метода?
Вызов этого метода означает, что освобождение связанных файловых замков не является детерминированным?
На самом деле, IEnumerator не реализует IDisposable. Но многие * реализации * IEnumerator действительно реализуют IDisposable, а также цикл foreach и методы расширения LINQ, все делают 'as' cast, чтобы проверить, реализует ли enumerator IDisposable, и если это так, то вызывается Dispose. –
Исправление: не общий IEnumerator не реализует IDisposable, но общий ('IEnumerator'). –
Ах, ты прав. Га, глупая ошибка, позвольте мне отредактировать ответ. –