2010-03-25 7 views
7

मैं कोड की इस पंक्ति का उपयोग करना चाहता हूं:कथन का उपयोग करने के अंदर 2 प्रकार घोषित करें संकलन त्रुटि देता है?

using (ADataContext _dc = new ADataContext(ConnectionString), BDataContext _dc2 = new BrDataContext(ConnectionString)){ // ...} 

यह एक संकलन त्रुटि देता है:

Cannot use more than one type in a for, using, fixed or declartion statement.

मैंने सोचा कि यह संभव था? एमएसडीएन का कहना है कि यह है: http://msdn.microsoft.com/en-us/library/yh598w02%28VS.80%29.aspx एमएसडीएन नमूना कोड में फ़ॉन्ट का उपयोग किया जाता है, जो वर्ग है और इस प्रकार एक संदर्भ प्रकार के साथ-साथ मेरे दो डेटा कॉन्टेक्स्ट कक्षाएं भी होती हैं।

क्या गलत हुआ? एमएसडीएन नमूना से मेरा प्रयास अलग कैसे है?

उत्तर

13

नहीं कर सकते हैं MSDN घोषित एक ही प्रकार के दो वस्तुओं के उदाहरण। आप कई प्रकार की घोषणा कर रहे हैं, इसलिए आपको प्राप्त त्रुटि संदेश।

संपादित करें: उस पर सभी "एरिक Lippert" जाने के लिए, भाषा विनिर्देश की धारा 8.13 का कहना है:

एक संसाधन-प्राप्ति में स्थानीय-चर-घोषणा का रूप ले लेता है, तो यह संभव है किसी दिए गए प्रकार के कई संसाधन प्राप्त करने के लिए। प्रपत्र

using (ResourceType r1 = e1, r2 = e2, ..., rN = eN) statement 

का विवरण का उपयोग कर ठीक बयानों का उपयोग कर नेस्ट के अनुक्रम के बराबर है:

using (ResourceType r1 = e1) 
    using (ResourceType r2 = e2) 
     ... 
      using (ResourceType rN = eN) 
       statement 

महत्वपूर्ण यह है कि इन एक दिया प्रकार की संसाधन, नहीं प्रकार के होते हैं है , जो एमएसडीएन उदाहरण से मेल खाता है।

+5

वर्ड करो। पठनीयता –

5

using संसाधन अधिग्रहण विवरण एक घोषणा हो सकती है। एक घोषणा केवल एक प्रकार के चर घोषित कर सकती है।

आप कर सकते हैं:

using (TypeOne t = something, t2 = somethingElse) { ... } 
// Note that no type is specified before `t2`. Just like `int a, b` 

लेकिन आप

using (TypeOne t = something, TypeTwo t2 = somethingElse) { ... } 
11

इस बजाय

using (ADataContext _dc = new ADataContext(ConnectionString)) 
using (BDataContext _dc2 = new BrDataContext(ConnectionString)) 
{ // ...} 
+0

मैं वास्तव में तर्क दूंगा कि कम ब्रेसिज़ इस मामले में अधिक पठनीयता के बराबर हैं। –

+7

के लिए कुछ और ब्रेसिज़ के साथ -------------- –

+0

मुझे लगता है कि यह कम ब्रेसिज़ के साथ भी अधिक पठनीय है। –

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