我有以下代码示例:
public class Base
{
public virtual void MyMethod(int param)
{
Console.WriteLine("Base:MyMethod - Int {0}", param);
}
}
public class Derived1 : Base
{
public override void MyMethod(int param)
{
Console.WriteLine("Derived1:MyMethod - Int {0}", param);
}
public void MyMethod(double param)
{
Console.WriteLine("Derived1:MyMethod - Double {0}", param);
}
}
class Program
{
static void Main(string[] args)
{
Base objB = new Base();
objB.MyMethod(5);
Base objBD = new Derived1();
objBD.MyMethod(5);
Derived1 objD = new Derived1();
objD.MyMethod(5);
Console.ReadLine();
}
}
上述代码的输出如下:
基数:MyMethod - Int 5
Derived1:MyMethod - Int 5
Derived1:MyMethod - 双 5
对于使用'objD'的'MyMethod'的第三次调用,为什么在我实际传递一个INT时使用'DOUBLE'重载。
使用“objBD”的第二次调用似乎表现正确。请建议。