2016-11-19 8 views
6

मैं .NET कोर 1.1 का उपयोग कर रहा हूं, पहले जब मैं .NET फ्रेमवर्क के साथ था, तो मैं आमतौर पर Close() पर FileStream पर कॉल करता हूं या स्ट्रीम स्ट्रीम समाप्त करने के बाद कोई भी स्ट्रीम , लेकिन .net कोर 1.1 में FileStream वर्ग में बंद विधि नहीं है, मुझे Dispose() मिला लेकिन यह नहीं पता कि यह समकक्ष है या नहीं। कोई भी मुझे नेट FileStream/StreamWriter कक्षा में नेट नेट में सही तरीके से बंद करने का सही तरीका बताता है?.NET कोर 1.1 में फ़ाइलस्ट्रीम/स्ट्रीमवाइटर में कोई बंद नहीं है() विधि

+3

उन्होंने .NETCore का उपयोग पूर्ण ढांचे में कुछ अच्छी तरह से डिजाइन किए गए डिज़ाइन निर्णयों को सही करने के लिए किया जो अच्छी तरह से बाहर नहीं निकले। स्ट्रीम क्लास की तरह दो विधियां हैं जो सटीक वही काम करती हैं, निपटान करें और बंद करें। कागज पर ध्वनि डिजाइन, लेकिन कई प्रोग्रामर के लिए परेशान है जो यह तय नहीं कर सकते कि कौन सा "बेहतर" है। –

+0

हंस की तरह कहा गया है, आप इसके बजाय 'निपटान' का सुरक्षित रूप से उपयोग कर सकते हैं। चर्चा समाप्त करने के लिए कृपया नीचे एक उत्तर स्वीकार करें। माइक्रोसॉफ्ट ने आने वाले .NET मानक 2.0 में 'बंद' वापस जोड़ा है, जो .NET कोर 1.2 का हिस्सा होना चाहिए। –

उत्तर

5

कार्यान्वयन IDisposable का अर्थ है कि आप using कथन का उपयोग कर सकते हैं, जो Dispose() विधि को स्पष्ट रूप से कॉल करेगा, इस प्रकार स्ट्रीम को बंद कर देगा।

उपयोग

using (StreamWriter sw = new StreamWriter(path)) 
{ 
    // your logic here 
} // here Dispose() is called implicitly and the stream is closed 
0

उपयोग using या अपने खुद के Dispose Pattern निर्माण।

using (StreamWriter sw = new StreamWriter(path) 
{ 

} 
0

इस मामले की छानबीन चल रहा है, विरासत कोड बरकरार रखने की कोशिश कर, एक और विकल्प एक विस्तार विधि लिखने के लिए होगा।

public static class FileStreamExtension 
{ 
    public static void Close(this FileStream reader) 
    { 
     reader.Dispose(); 
    } 
} 
संबंधित मुद्दे