एक कोड समीक्षा में एक सहकर्मी ने पैरामीटर के रूप में स्ट्रीम में पास करने के लिए अपना कोड बदल दिया। उन्होंने कहा कि यह सुनिश्चित करना था कि ऑब्जेक्ट का निपटान करने की ज़िम्मेदारी कॉलर को स्पष्ट है। एक मायने में मैं सहानुभूति व्यक्त कर सकता हूं। मैं ऑब्जेक्ट निर्माता को क्लीनअप के लिए ज़िम्मेदार भी पसंद करूंगा।क्या डिस्पोजेबल वस्तुओं को पारित किया जाना चाहिए?
दूसरी तरफ, न तो विधि using
की आवश्यकता को और स्पष्ट करती है। मैं सरल विधि कॉल भी पसंद करता हूं।
public static TextReader Serialize<T>(T obj) where T: new()
{
if (obj == null) throw new ArgumentNullException("obj");
return Serialize<T>(obj, null);
}
वी.एस.
public static void Serialize<T>(T obj, TextWriter outbound) where T : new()
{
if (obj == null) throw new ArgumentNullException("obj");
Serialize<T>(obj, outbound, null);
}
ले लो वहाँ किसी भी तकनीकी अतिरिक्त परम जोड़ने के लिए कारण है?
यदि हम .NET Framework से स्वयं का क्यू लेते हैं, उदाहरण के लिए, 'XmlSerializer', स्ट्रीम को पैरामीटर के रूप में पारित किया जाता है। – mellamokb
http://codereview.stackexchange.com/ के लिए एक प्रश्न हो सकता है – MattDavey