2011-03-17 3 views
7

कैसे और कब सी # में आधार वर्ग निर्माता कॉल करने के लिएकैसे और कब सी # में आधार वर्ग निर्माता कॉल करने के लिए

+0

[ग # में कॉलिंग आधार निर्माता] (के संभावित डुप्लिकेट http://stackoverflow.com/questions/12051/calling-base-constructor-in-:

यहाँ यह कैसे करना है पर एक उदाहरण है सी) और [सी # कॉलिंग बेस क्लास कन्स्ट्रक्टर] (http://stackoverflow.com/questions/4212624/c-calling-base-class-constructor) –

उत्तर

14

आप इस तरह आधार वर्ग निर्माता कॉल कर सकते हैं:

// Subclass constructor 
public Subclass() 
    : base() 
{ 
    // do Subclass constructor stuff here... 
} 

आप कहेंगे आधार वर्ग यदि कुछ ऐसा है जो सभी बच्चों के वर्गों को स्थापित करने की आवश्यकता है। वस्तुओं को शुरू करने की आवश्यकता है, आदि ...

उम्मीद है कि इससे मदद मिलती है।

+5

आप इस तरह बेस क्लास कन्स्ट्रक्टर भी कॉल कर सकते हैं: 'सार्वजनिक सबक्लास() {} '- यह आपके उदाहरण के समान व्यवहार है। –

7

आमतौर पर बेस क्लास कन्स्ट्रक्टर को अपने सबक्लास कन्स्ट्रक्टर से कॉल करने के लिए एक अच्छा अभ्यास है ताकि यह सुनिश्चित किया जा सके कि बेस क्लास आपके उप-वर्ग से पहले ही शुरू हो। आप बेस क्लास कन्स्ट्रक्टर को कॉल करने के लिए base कीवर्ड का उपयोग करते हैं। ध्यान दें कि आप this कीवर्ड का उपयोग करके अपनी कक्षा में एक और कन्स्ट्रक्टर भी कॉल कर सकते हैं।

public class BaseClass 
{ 
    private string something; 

    public BaseClass() : this("default value") // Call the BaseClass(string) ctor 
    { 
    } 

    public BaseClass(string something) 
    { 
     this.something = something; 
    } 

    // other ctors if needed 
} 

public class SubClass : BaseClass 
{ 
    public SubClass(string something) : base(something) // Call the base ctor with the arg 
    { 
    } 

    // other ctors if needed 
} 
+6

यह सिर्फ एक अच्छा अभ्यास नहीं है, यह संकलक द्वारा लागू एक आवश्यकता है। [एक बेस कन्स्ट्रक्टर को यह कहा जाएगा कि आपको यह पसंद है या नहीं।] (Http://stackoverflow.com/questions/3265958/how-can-i-tell-the-inheriting-class-to-not-call-its- बेस-क्लास-पैरामीटर-कम-सह) –

+1

अच्छा बिंदु ... यदि आप स्पष्ट रूप से एक विशिष्ट ctor को कॉल नहीं करते हैं तो यह डिफ़ॉल्ट ctor को कॉल करेगा। –

+0

फ्लैश/एएस 3 में, आप सबक्लास कन्स्ट्रक्टर में काम कर सकते हैं, फिर बेस क्लास कन्स्ट्रक्टर चलाने के लिए "सुपर()" पार्टवे को कॉल करें, फिर सबक्लास कन्स्ट्रक्टर में अधिक कोड जारी रखें। सी # में, आपको उप-वर्ग कन्स्ट्रक्टर रन में किसी भी कोड से पहले, बेस क्लास कन्स्ट्रक्टर को पहले कॉल करने के लिए मजबूर होना पड़ता है। – Triynko

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