नीचे दिए गए कोड में, क्या कोई मौका है कि जीसी मेमोरीस्ट्रीम को साफ़ कर देगा ताकि ToArray विफल हो जाए, क्योंकि यह उपयोग कथन के बाहर है?मेमोरीस्ट्रीम को कॉल कर रहा है। ToArray() निपटान के बाद खतरनाक है?
private static byte[] getBytes()
{
MemoryStream ms = null;
using (ms = new MemoryStream())
{
// ...
}
return ms.ToArray();
}
मुझे दस्तावेज़ों में कुछ भी नहीं मिला, लेकिन इसके लिए हमारे पास मोनो में परीक्षण हैं और कोड इस मामले में काम करता है। बीटीडब्ल्यू, ms.Close() को कॉल करने की कोई आवश्यकता नहीं है। – Gonzalo
बस एक नोट: MemoryStream.Close के लिए .NET 4.0 दस्तावेज़ (http://msdn.microsoft.com/en-us/library/system.io.stream.close%28v=vs.100%29.aspx) * * स्ट्रीम में बंद होने के बाद "बफर अभी भी मेमोरीस्ट्रीम पर उपलब्ध है।" बयान। मुझे आश्चर्य होता है कि क्या वे बदलते व्यवहार को हवा में डाल देते हैं। –
@scottmarlowe: यह Stream.Close के लिए प्रलेखन है। ऐसा लगता है कि उन्होंने मेमोरीस्ट्रीम के लिए "ओवरराइडिंग दस्तावेज" प्रदान करना बंद कर दिया है। बंद करें। वास्तविक व्यवहार को बदलने से बहुत सारे कोड टूट जाएंगे। –