पर काम नहीं कर रहे पॉलीमोर्फिक तरीके मैं बस एक बहुत ही रोचक समस्या पर ठोकर खाई। निम्नलिखित कोड दे:सी # 4
using System;
class Program
{
class A { }
class B : A { }
private static void MyMethod(A a) /* first method */
{
Console.WriteLine("A"); ;
}
private static void MyMethod(B b) /* second method */
{
Console.WriteLine("B");
}
static void Main(string[] args)
{
var a = new A();
// Call first method
MyMethod(a);
A b = new B();
// Should call the second method
MyMethod(b);
Console.ReadLine();
}
}
मैं उम्मीद होती है कि दूसरी विधि क्योंकि चर के क्रम प्रकार बी क्यों कोड पहली विधि के बजाय कॉल कोई भी विचार है बुलाया जाएगा?
धन्यवाद, Tibi
कुछ स्पष्टीकरण: बहुरूपता कई रूपों जो करने के लिए आप जहां प्रणाली की घोषणा कुछ भी नहीं है का मतलब है।
विधि अधिभार पॉलिमॉर्फिज्म का एक रूप है, ad-hoc polymorphism।
जिस तरह से पॉलिमॉर्फिज्म सामान्य रूप से देर से बाध्यकारी का उपयोग करके लागू किया जाता है।
गतिशील इस समस्या के लिए कामकाज है।
तथ्य यह है कि यह सी # (या जावा) में काम नहीं कर रहा है, यह एक डिज़ाइन निर्णय है जिसे मैं समझना चाहता हूं कि क्यों बनाया गया था, और कोई भी जवाब इस प्रश्न का उत्तर नहीं दे रहा है।
/Tibi
यह बहुरूपता नहीं है, आपके पास एक ही विधि के दो अधिभारित उदाहरण हैं, प्रत्येक पैरामीटर के रूप में विभिन्न प्रकार लेते हैं। फिर आप ए के रूप में "बी" घोषित करते हैं। कंपाइलर आपको ऐसा करने देता है क्योंकि बी को ए – Maess