gpt4 book ai didi

c# - 方法优先级新 vs 覆盖错误

转载 作者:行者123 更新时间:2023-11-30 18:11:29 26 4
gpt4 key购买 nike

<分区>

我在这样描述的类中遇到了意想不到的(对我来说意想不到的)方法调用:

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”。似乎我错过了一些与继承逻辑相关的东西。
有人可以解释这种行为吗?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com