當在C#中處理文件時,我有條件考慮釋放相關資源。通常這是一個使用語句,除非它像File.ReadAllLines這樣的單行便利方法 ,它將爲我打開和關閉文件。什麼時候File.ReadLines免費資源
.net 4.0引入了方便的方法File.ReadLines。這將返回一個IEnumerable,並被視爲處理文件的更有效方式 - 避免將整個文件存儲在內存中。爲此,我假設枚舉器中存在一些延遲執行邏輯。
很明顯,因爲這個方法返回一個IEnumerable,而不是和IDisposable,我不能用我使用using語句的直覺反應。
我的問題是: 考慮到這一點,是否有任何資源釋放這個方法的陷阱?
調用此方法是否意味着相關文件鎖定的釋放是非確定性的?
實際上,IEnumerator並沒有實現IDisposable。但IEnumerator的許多*實現確實實現了IDisposable,foreach循環和LINQ擴展方法都是通過''''''來查看枚舉器是否實現了IDisposable,如果是,則調用Dispose。 – 2010-07-31 18:14:20
更正:非泛型IEnumerator不實現IDisposable,但是泛型('IEnumerator')。 –
2010-07-31 18:15:15
啊,你說得對。嘎,愚蠢的錯誤,讓我編輯答案。 – 2010-07-31 18:15:20