के साथ विधियों के आउटपुट को समझने में सक्षम नहीं है आज मैं सी # के वैकल्पिक पैरामीटर्स के मूलभूत सिद्धांतों को समझने के लिए एक छोटा प्रोग्राम लिख रहा था।वैकल्पिक पैरामीटर
के बाद कार्यक्रम है:
DerivedClass d = new DerivedClass();
d.Test();
d.Test(6);
d.Test(b:7);
आउटपुट::
DerivedClass.Test में (int a = 1
abstract class AbstractClass { internal abstract void Test(); } sealed class DerivedClass : AbstractClass { internal override void Test() { Console.WriteLine("In override DerivedClass.Test() method"); } internal void Test(int a = 1) { Console.WriteLine("In DerivedClass.Test(int a=1) method " + a); } internal void Test(int b, int a = 1) { Console.WriteLine("In DerivedClass.Test(int b, int a=1) method " + string.Format("{0} {1}", b, a)); } }
यह मैं कैसे
Test()
विधि कहा जाता है) विधि 1DerivedClass.Test में (पूर्णांक एक = 1) विधि 6
DerivedClass.Test में (int ख, पूर्णांक एक = 1) विधि 7 1
d.Test();
के बारे में: यहाँ मेरी समझ यह है कि यह होगा Test()
एक वैकल्पिक पैरामीटर के साथ विधि के रूप में लेते हैं और इस उत्पादन के साथ Test(int a = 1)
लागू करेगा:
0,123,DerivedClass.Test में (पूर्णांक एक = 1) विधि 1
लेकिन यह क्या मुझे confuses जब d.Test(6);
क्रियान्वित है: क्यों इस विधि कॉल के रूप में उत्पादन न जताए:
DerivedClass.Test में (int ख, पूर्णांक एक = 1) विधि 6 1
मेरी समझ "6" के अनुसार अनिवार्य पैरामीटर है और यह आह्वान चाहिए
internal void Test(int b, int a = 1)
कृपया समझाने क्या मेरी समझ के साथ गलत है।
इसके अलावा ओवरडिन विधि को कैसे कॉल करें?
internal override void Test()
'टेस्ट (6) 'टेस्ट क्यों शुरू किया जाना चाहिए (int b, int a = 1)'? पहले से ही एक मिलान विधि 'टेस्ट (int a = 1) 'है, जिसे' ए' सेट 'से' 6' के साथ बुलाया जाता है। –
कृपया देखें ["प्रश्नों में उनके शीर्षक में" टैग "शामिल होना चाहिए?"] (Http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles), जहां सर्वसम्मति "नहीं, उन्हें नहीं करना चाहिए"! –
@Dennis_E लेकिन पहले टेस्ट में 'टेस्ट (int a = 1)' क्यों कहा जाता है जब किसी भी पैरा के बिना बेहतर मिलान होता है? – HimBromBeere