मैं सी # 4.0 के बारे में कुछ प्रस्तुति के माध्यम से जा रहा था और अंत में प्रस्तुतकर्ता ने निम्नलिखित कोड के साथ एक प्रश्नोत्तरी पोस्ट की।सी # नामित पैरामीटर, विरासत और अधिभार आश्चर्य
using System;
class Base {
public virtual void Foo(int x = 4, int y = 5) {
Console.WriteLine("B x:{0}, y:{1}", x, y);
}
}
class Derived : Base {
public override void Foo(int y = 4, int x = 5) {
Console.WriteLine("D x:{0}, y:{1}", x, y);
}
}
class Program {
static void Main(string[] args) {
Base b = new Derived();
b.Foo(y:1,x:0);
}
}
// The output is
// D x:1, y:0
मैं समझ नहीं सकता है क्यों कि निर्गम (प्रस्तोता के बिना प्रस्तुति ऑफ़लाइन पढ़ने की समस्या) का उत्पादन किया है। मैं
D x:0, y:1
मैंने नेट खोजने के लिए नेट की खोज की लेकिन अभी भी इसे नहीं मिला। क्या कोई इसे समझा सकता है?
इसका नाम पैरामीटर के साथ कुछ लेना देना नहीं है। जानें कि बहुरूपता क्या है। –
समस्या यह है कि कोई भी डेवलपर डेरिवेट की उम्मीद करेगा। पॉलिमॉर्फिज्म के कारण फू को बुलाया जाना चाहिए। तो किसी के लिए यह सोचना सामान्य बात है कि Derived.Foo में नामित पैरामीटर लिया जाएगा। लेकिन चूंकि यह रनटाइम पॉलीमोर्फिज्म कंपाइलर बेस.फू से पैरामीटर नामों का उपयोग करता है। – ferosekhanj