2010-07-01 16 views
5

कैसे ग #इनर वर्ग और सी # में बाहरी वर्ग

में भीतरी बाहरी वर्गों को लागू करने के मैं जबकि संकलन

class Outer 
{ 
    int TestVariable = 0; 
    class Inner 
    { 
     int InnerTestVariable = TestVariable // Need to access the variable "TestVariable" here 
    } 
} 

इसका दिखा त्रुटि की तरह दो नेस्टेड कक्षाएं

है।

यह

1) स्थिर

2 के रूप में TestVariable बनाना) इनर वर्ग के लिए बाहरी वर्ग का एक उदाहरण पासिंग द्वारा हल किया जा सकता

लेकिन जावा में उदाहरण बनाने के लिए कोई जरूरत नहीं है या स्थैतिक।

क्या मैं सी # में भी समान कार्यक्षमता का उपयोग कर सकता हूं?

+0

संभावित डुप्लिकेट [नेस्टेड क्लास से संलग्न कक्षा में नियंत्रण तक पहुंचने का सबसे अच्छा तरीका क्या है?] (Http://stackoverflow.com/questions/185124/whats-the-best-way-of-accessing- नियंत्रण-में-संलग्न-कक्षा-से-द-एनएस) – nawfal

उत्तर

11

नहीं, सी # में इस मामले में जावा के समान अर्थशास्त्र नहीं है। आप या तो TestVariableconst, static बना सकते हैं, या Outer का उदाहरण Inner के निर्माता को पहले से ही नोट कर सकते हैं।

0

चर internal बनाओ या भीतरी के constructor को पारित

+0

यदि मैं चर को आंतरिक के रूप में घोषित करता हूं, तो यह आंतरिक कक्षा के अंदर पहुंच योग्य नहीं है –

3

तुम भी है बाहरी वर्ग उदाहरण के बिना भीतरी वर्ग का एक उदाहरण बना सकते हैं, क्या उस मामले में आपको लगता है उसका क्या होगा? यही कारण है कि आप इसे

Outer.Inner iner = new Outer.Inner(); // what will be InnerTestVariable value in this case? There is no instance of Outer class, and TestVariable can exist only in instance of Outer 

यहां कुछ ऐसे तरीके यह

class Outer 
    { 
     internal int TestVariable=0; 
     internal class Inner 
     { 
      public Inner(int testVariable) 
      { 
       InnerTestVariable = testVariable; 
      } 
      int InnerTestVariable; //Need to access the variabe "TestVariable" here 
     } 
     internal Inner CreateInner() 
     { 
      return new Inner(TestVariable); 
     } 
    } 
0

लघु जवाब करने के लिए में से एक है का उपयोग नहीं कर सकते हैं: नहीं,

आप किसी भी तरह में TestVariable इंजेक्षन करने की आवश्यकता होगी आपकी आंतरिक वर्ग अपना परीक्षण बनाना संभवतः अवांछित व्यवहार का कारण बन सकता है। मेरा शक्कर इसे कन्स्ट्रक्टर के माध्यम से इंजेक्ट करना होगा।

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