gpt4 book ai didi

c# - 为什么代码从 ClassB 调用 Get()?

转载 作者:行者123 更新时间:2023-12-02 22:31:40 25 4
gpt4 key购买 nike

当我调用下面的代码行时,它从 ClassB 执行 Get()。

对象被创建为 ClassC,它作为带有 new 关键字的方法。理想情况下,它应该从 ClassC 调用 Get()

Main()
{
ClassA obj = new ClassC();
lbl.Text = obj.Get();
}


public class ClassA
{
public virtual string Get()
{
return "from A";
}
}

public class ClassB : ClassA
{
public override string Get()
{
return "from B";
}
}

public class ClassC : ClassB
{
public new string Get()
{
return "from C";
}
}

谁能帮我看看原因

最佳答案

关键是ClassC中的new关键字。它表示如果对象作为 ClassC 处理,编译器将使用它,以掩盖原始的 Get() 函数。

如果对象是 ClassA 引用,则 Get() 将作为原始 Get() 处理,从而导致覆盖 ClassB 中的 Get()

关于c# - 为什么代码从 ClassB 调用 Get()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12142563/

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