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);
}
}
我得到的這個輸出是「在導出的OBJECT」。這種奇怪的行爲是什麼原因?經過一番研究,我發現原因是在基類中聲明的簽名被忽略。他們爲什麼被忽略?爲什麼在基類中聲明的簽名被忽略?
+1的問題,我同意這是違反直覺的行爲。 – 2010-09-05 22:30:03
我同意這種行爲很奇怪。我想知道:你問這是因爲你真的想要這麼做還是因爲你好奇?我看不出有什麼理由實際執行這樣的事情,但我一定想知道它爲什麼會發生。 – 2010-09-05 22:41:08
[C#中的方法隱藏如何工作? (Part Two)](http://stackoverflow.com/questions/710459/how-method-hiding-works-in-c-part-two) – 2010-09-05 22:57:33