सी # में फ़ाइलों के साथ काम करते समय, मुझे संबंधित संसाधनों को मुक्त करने के बारे में सोचने की शर्त है। आम तौर पर यह एक प्रयोग कथन है, जब तक कि यह एक लाइनर सुविधा विधि फ़ाइल.ReadAllLines की तरह नहीं है, जो मेरे लिए फ़ाइल खोल और बंद कर देगा।फ़ाइल करता है। रीडलाइन मुक्त संसाधन
.NET 4.0 ने सुविधा विधि फ़ाइल.रेडलाइन पेश की है। यह एक IENumerable देता है और फ़ाइल को संसाधित करने के लिए एक अधिक कुशल तरीका के रूप में बिल किया जाता है - यह पूरी फ़ाइल को स्मृति में संग्रहीत करने से बचाता है। ऐसा करने के लिए मुझे लगता है कि गणक में कुछ स्थगित निष्पादन तर्क है।
जाहिर है क्योंकि यह विधि एक आईनेमरेबल, नहीं और आईडीस्पोजेबल लौटाती है, इसलिए मैं एक उपयोग कथन की मेरी आंत प्रतिक्रिया के साथ नहीं जा सकता।
मेरे प्रश्न हैं: इस बात के साथ, क्या इस विधि के साथ संसाधन विलोपन पर कोई गठजोड़ है?
क्या इस विधि को कॉल करना मतलब है कि संबंधित फ़ाइल ताले की रिहाई गैर-निर्धारक है?
दरअसल, आईनेमेरेटर IDISposable लागू नहीं करता है। लेकिन आईन्यूमेरेटर के कई * कार्यान्वयन * IDISposable, और foreach loop, और LINQ एक्सटेंशन विधियों को लागू करते हैं, सभी यह देखने के लिए 'as' cast करते हैं कि गणनाकर्ता IDISposable लागू करता है, और यदि ऐसा है तो वे निपटान कहते हैं। –
सुधार: गैर-जेनेरिक आईन्यूमेरेटर IDISposable लागू नहीं करता है, लेकिन जेनेरिक एक ('IENumerator') करता है। –
आह, आप सही हैं। गह, मूर्खतापूर्ण गलती, मुझे जवाब संपादित करने दें। –