मैंने आज कुछ कोड लिखा और यह एक और डेवलपर द्वारा बदला गया, जिन्होंने कहा कि यह अधिक सुरक्षित था। मुझे यकीन है कि यह सही है के रूप में मैं यहाँ क्या किया गया था का लाभ नहीं देख सकते हैं कुछ कोड उदाहरणफ़ंक्शन में स्ट्रीम बंद करना, एक बुरा विचार?
public byte[] ReadFile(Stream stream)
{
byte[] result = null;
try
{
// do something with stream
result = <result of operation>
}
finally
{
stream.Close();
}
return result;
}
इस
public byte[] ReadFile(Stream stream)
{
byte[] result = null;
// do something with stream
result = <result of operation>
return result;
}
में बदल गया था मैं सी # करने के लिए करना चाहिए धारा नहीं काफी नया हूँ कर रहे हैं नहीं कर रहा हूँ जब आप इसके साथ समाप्त हो जाते हैं तो बंद हो जाएं?
ऐसा नहीं है कि या तो मामले में यह फायदेमंद अपने 'ReadFile' दस्तावेज़ के लिए के लिए किया जाए या नहीं यह धारा बंद कर देता है है। उदाहरण के लिए, 'स्ट्रीम रीडर' के लिए कन्स्ट्रक्टर जो स्ट्रीम लेता है, विशेष रूप से कहता है कि यह उस स्ट्रीम का निपटान करता है, इसलिए कॉलर को फिर से इसका निपटान नहीं करना चाहिए। – Servy
@ सर्वी: यह कहना अधिक सटीक है कि कॉलर _needn't_ फिर से इसका निपटान नहीं करता है। 'निपटान' का मतलब डिजाइन द्वारा बेवकूफ होना है, इसलिए इसे बार-बार कॉल करना कोई प्रभाव नहीं होना चाहिए। – Douglas
@ डगलस यह जानना अभी भी महत्वपूर्ण है कि कोई विधि 'आईडीस्पोजेबल' में पारित होने का निपटान करती है क्योंकि कॉलर इसका उपयोग करना जारी रख सकता है। यदि आप इसे किसी ऐसे व्यक्ति को पास करते हैं जो इसका निपटारा करता है और आप इसे फिर से उपयोग करते हैं, तो बीएएम! – Servy