2012-02-22 14 views
224

क्या यह कोड किसी भी तरह से ब्लॉक के उपयोग के अंदर 2 चर घोषित करके थोड़ा और कॉम्पैक्ट बनाना संभव है?एकाधिक चर के साथ कथन का उपयोग कर

using (var sr = new StringReader(content)) 
{ 
    using (var xtr = new XmlTextReader(sr)) 
    { 
     obj = XmlSerializer.Deserialize(xtr) as TModel; 
    } 
} 
+5

नई XmlTextReader का प्रयोग न करें '()'। 'XmlReader.Create()' –

+1

@ जॉन सैंडर्स का उपयोग करें क्यों? –

+10

'नया XmlTextReader() '.NET 2.0 के बाद से हटा दिया गया है। 'XmlReader.Create()' का उपयोग करके, आपको सबसे अच्छा व्युत्पन्न 'XmlReader' क्लास संभव होगा, जैसा कि केवल एक' XmlTextReader' वर्ग के विपरीत है। –

उत्तर

417

स्वीकार किए जाते हैं जिस तरह से बयान सिर्फ श्रृंखला के लिए है:

using (var sr = new StringReader(content)) 
using (var xtr = new XmlTextReader(sr)) 
{ 
    obj = XmlSerializer.Deserialize(xtr) as TModel; 
} 

ध्यान दें कि आईडीई भी इस खरोज का समर्थन करेंगे, अर्थात यह जानबूझकर दूसरी using बयान इंडेंट करने के लिए कोशिश नहीं करेंगे।

+0

क्या यह एक-लाइनर-नो-ब्रेसेस नियम का उपयोग एक दूसरे के भीतर बयानों को गुंजाइश करने के लिए करता है, या वास्तव में किसी प्रकार की श्रृंखला में संकलित करता है? – ssube

+0

@peachykeen यह एक घोंसला वाला ब्लॉक है, लेकिन मुझे लगता है कि इस मामले में यह किसी भी तरह से 'उपयोग' के अर्थशास्त्र के कारण श्रृंखला से अलग नहीं है। अन्यथा मैं समझ नहीं पा रहा हूं कि चेन द्वारा आपका क्या मतलब है: ध्यान दें कि 'उपयोग करने' के लिए सही तरीके से काम करने के लिए, प्रत्येक संसाधन को अपनी 'कोशिश' की आवश्यकता होती है ... 'अंत में' ब्लॉक। –

+0

मुझे इस कोड और प्रश्न के बीच कोड में कोई अंतर नहीं दिखता है। –

96

निम्नलिखित केवल उसी प्रकार के उदाहरणों के लिए काम करता है! टिप्पणियों के लिए धन्यवाद।

यह नमूना कोड MSDN से है:

using (Font font3 = new Font("Arial", 10.0f), font4 = new Font("Arial", 10.0f)) 
{ 
    // Use font3 and font4. 
} 
+23

यह केवल तभी काम करता है जब चर एक ही प्रकार के होते हैं। –

+1

जो केवल काम करता प्रतीत होता है यदि दोनों ऑब्जेक्ट्स एक ही प्रकार के –

+3

हैं तो चर को आईडीस्पोज़ेबल के रूप में घोषित करें और बाद में डालें? –

संबंधित मुद्दे