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);
}
}
Bunun için aldığım çıkış "Türetilmiş OBJECT" dir. Bu garip davranışın sebebi nedir? Bazı araştırmalardan sonra, nedeninin taban sınıfında bildirilen imzaların göz ardı edildiğini öğrendim. Neden göz ardı ediliyorlar?Temel sınıfta bildirilen imzalar neden yok sayılıyor?
+1 soruya, bu sezgilere davranıştır katılıyorum. –
Davranışın garip olduğunu kabul ediyorum. Bilmek isterim: Bunu soruyor musunuz, çünkü bunu yapmak istersiniz, yoksa merak ettiğiniz için mi? Böyle bir şeyi gerçekte uygulamak için bir neden göremiyorum, ama neden olduğunu bilmek isterdim. –
olası kopyası [C# yöntem gizleme nasıl çalışır? (İkinci Bölüm)] (http://stackoverflow.com/questions/710459/how-method-hiding-works-in-c-part-two) –