2012-05-08 15 views
7

क्या कोई मुझे बता सकता है कि नीचे वाक्यविन्यास का अर्थ क्या है?"आधार" वाक्यविन्यास का क्या अर्थ है?

public ScopeCanvas(Context context, IAttributeSet attrs) : base(context, attrs) 
{ 
} 

मेरा मतलब है method(argument) : base(argument) {} क्या है ??

पीएस यह एक वर्ग का एक निर्माता है।

+2

एक constuctor, न कि एक विधि है यही कारण है कि। – Gabe

+2

मेरा मानना ​​है कि यदि किसी प्रश्न में दो मिनट से भी कम समय में 5 से अधिक उत्तरों हैं, तो यह नहीं पूछा जाना चाहिए था। @ सेन 87 आप आसानी से "सी # बेस कीवर्ड" – SimpleVar

+3

[Google आपको बहुत तेज जवाब देंगे] Google (https://www.google.com/search?q=C%23+base&ie=utf-8&oe=utf-8&aq= टी एंड आरएलएस = org.mozilla: एन-यूएस: आधिकारिक और ग्राहक = फ़ायरफ़ॉक्स-ए) फिर स्टैक ओवरफ्लो। (@Yorye Nathan - बिल्कुल मेरा बिंदु।) – zmilojko

उत्तर

17
के पैरामीटर सूची के साथ बुलाया जाता है

:base सिंटैक्स एक व्युत्पन्न प्रकार के लिए बेस क्लास पर एक कन्स्ट्रक्टर को चेन करने का एक तरीका है जो निर्दिष्ट तर्क स्वीकार करता है। यदि कंपाइलर छोड़ा जाता है तो चुपचाप बेस क्लास कन्स्ट्रक्टर से जुड़ने का प्रयास करेगा जो 0 तर्क स्वीकार करता है।

class Parent { 
    protected Parent(int id) { } 
} 

class Child1 : Parent { 
    internal Child1() { 
    // Doesn't compile. Parent doesn't have a parameterless constructor and 
    // hence the implicit :base() won't work 
    } 
} 

class Child2 : Parent { 
    internal Child2() : base(42) { 
    // Works great 
    } 
} 

वहाँ भी :this वाक्य रचना जो एक निर्दिष्ट तर्क सूची

+0

+1: बिल्कुल सही स्पष्टीकरण। –

+0

** "अगर कंपाइलर छोड़ा जाता है तो चुपचाप बेस क्लास कन्स्ट्रक्टर से जुड़ने का प्रयास करेगा जो 0 तर्क स्वीकार करता है।" ** यह स्पष्टीकरण का सबसे महत्वपूर्ण हिस्सा है - धन्यवाद। – Sabuncu

3

आपका वर्ग की संभावना इस तरह परिभाषित किया गया है:

MyClass : BaseClass 

यह कुछ अन्य वर्ग से निकला है। आपके कन्स्ट्रक्टर पर : base(...) आपके व्युत्पन्न वर्ग के कन्स्ट्रक्टर में कोड चलाने से पहले बेस क्लास में उचित कन्स्ट्रक्टर को कॉल करता है।

Here एक संबंधित प्रश्न है।

संपादित

तिलक द्वारा बताया गया है, MSDN documentation on the base keyword एक अच्छा विवरण उपलब्ध कराती है।

1

आप वर्ग से इनहेरिट है गुजर आधार वर्ग से निर्माता कहता है कहा जाता है एक बेसक्लास, और जब आप स्कोप कैनवास प्रकार के किसी ऑब्जेक्ट को इंटिलाइज करते हैं, तो बेस कन्स्ट्रक्टर को पैरामीटर सूची (संदर्भ, एटर्स)

1

इसका मतलब है कि यह निर्माता दो तर्क लेता है, और उन्हें विरासत में मिला वस्तुओं निर्माता के पास रहता है के साथ एक ही प्रकार में कंस्ट्रक्टर्स के चेनिंग की अनुमति देता है है। केवल एक तर्क के साथ नीचे एक उदाहरण।

Public class BaseType 
{ 
    public BaseType(object something) 
    { 

    } 
} 

public class MyType : BaseType 
{ 
    public MyType(object context) : base(context) 
    { 

    } 
} 
2

यह एक सार अतिभारित वर्ग निर्माता जो प्राप्त होता है और आधार वर्ग के लिए तर्कों की initilizing और एक ओवरलोड निर्माता प्रयोग की जाने वाली है यदि निर्दिष्ट करने के लिए अनुमति देता है। LINK

public class A 
{ 
    public A() 
    { } 
    public A(int size) 
    { } 
}; 

class B : public A 
{ 
    public B() 
    {// this calls base class constructor A() 
    } 
    public B(int size) : base(size) 
    { // this calls the overloaded constructor A(size) 
    } 
} 
0

उपरोक्त उदाहरण में सभी के बारे में बात कर रहे हैं : आधार कोई भी के बारे में आधार ले जा रहा है। हाँ बेस का उपयोग माता-पिता के सदस्य तक पहुंचने के लिए किया जाता है लेकिन केवल निर्माता के साथ ही सीमित नहीं है, हम केवल base._parentVariable या base._parentMethod() का उपयोग कर सकते हैं।

base. example

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