【发布时间】:2019-09-23 09:24:16
【问题描述】:
我在这样描述的类中遇到了意外(对我来说出乎意料)的方法调用:
class Program
{
static void Main(string[] args)
{
int param = 5;
var item = new Derived();
item.DoWork(param);
Console.ReadLine();
}
}
class Derived : Base
{
public override void DoWork(int param) { Console.WriteLine("derived int"); }
public new void DoWork(double param) { Console.WriteLine("derived double"); }
}
class Base
{
public virtual void DoWork(int param) { Console.WriteLine("base int"); }
public virtual void DoWork(double param) { Console.WriteLine("base double"); }
}
我希望输出是:"derived int",但奇怪的是"derived double"。如果我将new 关键字更改为override,那么我会看到预期的输出"derived int"。似乎我错过了与继承逻辑相关的内容。
有人可以解释这种行为吗?
【问题讨论】:
标签: c#