class Base
{
public virtual void MethodA(int x)
{
Console.WriteLine ("In Base Class");
}
}
class Derived : Base
{
public override void MethodA(int x)
{
Console.WriteLine ("In derived INT)");
}
public void MethodA(object o)
{
Console.WriteLine ("In derived OBJECT");
}
}
class Test
{
static void Main()
{
Derived d = new Derived();
int k = 20;
d.MethodA(k);
}
}
Der Ausgang, den ich dafür bekam, ist "In abgeleitetem OBJECT". Was ist der Grund für dieses seltsame Verhalten? Nach einigen Recherchen fand ich heraus, der Grund ist die Signaturen in der Basisklasse deklariert werden ignoriert. Warum werden sie ignoriert?Warum werden in der Basisklasse deklarierte Signaturen ignoriert?
+1 auf die Frage, ich stimme dieses kontra-intuitives Verhalten. –
Ich stimme zu, dass das Verhalten seltsam ist. Ich würde gerne wissen: Fragen Sie das, weil Sie das wirklich wollen oder weil Sie neugierig waren? Ich sehe keinen Grund, so etwas zu implementieren, aber ich würde gerne wissen, warum das passiert. –
mögliches Duplikat von [Wie funktioniert das Ausblenden von Methoden in C#? (Teil zwei)] (http://stackoverflow.com/questions/710459/how-method-hiding-works-in-c-part-two) –