gpt4 book ai didi

c# - 了解 C# 中的虚拟方法、方法隐藏和重写

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

<分区>

我已经阅读了一些关于 C# 中的方法隐藏和重写的教程(包括 MSDN 网站上的教程),我在尝试理解逻辑时编写的一段代码中遇到了一个问题:

class A
{
public virtual void Foo()
{
Console.WriteLine("A");
}
}

class B : A
{
public override void Foo()
{
Console.WriteLine("B");
}
}

class C : B
{
new public virtual void Foo()
{
Console.WriteLine("C");
}
}
class Driver
{
static void Main()
{
A a = new A();
a.Foo();
B b = new B();
b.Foo();
C c = new C();
c.Foo();
a = new B();
a.Foo();
a = new C();
a.Foo();
Console.ReadKey();
}
}

每当我运行该代码时,我都会得到以下输出:A乙C乙B

我理解前四个,但第五个输出不应该是“C”,因为运行时实例是 C 而不是 A?我对方法隐藏还不是很满意,但不应该在 C 类中声明“new public virtual void Foo()”允许调用 Foo() 而不是 B 中的 Foo()?

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