gpt4 book ai didi

c# - 虚拟基础成员看不到覆盖?

转载 作者:太空狗 更新时间:2023-10-29 22:15:03 25 4
gpt4 key购买 nike

我一直认为 base.Something 等同于 ((Parent)this).Something,但显然事实并非如此。我认为覆盖方法消除了调用原始虚方法的可能性。

为什么第三个输出不一样?

void Main() {
Child child = new Child();

child.Method(); //output "Child here!"
((Parent)child).Method(); //output "Child here!"
child.BaseMethod(); //output "Parent here!"
}

class Parent {
public virtual void Method() {
Console.WriteLine("Parent here!");
}
}

class Child : Parent {
public override void Method() {
Console.WriteLine ("Child here!");
}
public void BaseMethod() {
base.Method();
}
}

最佳答案

因为在 BaseMethod 中,您通过使用 base 关键字显式调用了基类中的方法。在类中调用 Method() 和调用 base.Method() 是有区别的。

base 的文档中关键字,它表示(除其他事项外)它可用于调用已被其他方法覆盖的基类上的方法

关于c# - 虚拟基础成员看不到覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3612425/

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