gpt4 book ai didi

c# - 为什么 C# 不支持 base.base?

转载 作者:太空狗 更新时间:2023-10-29 17:36:07 26 4
gpt4 key购买 nike

我测试了这样的代码:

class A
{
public A() { }

public virtual void Test ()
{
Console.WriteLine("I am A!");
}
}

class B : A
{
public B() { }

public override void Test()
{
Console.WriteLine("I am B!");
base.Test();
}
}

class C : B
{
public C() { }

public override void Test()
{
Console.WriteLine("I am C!");
base.base.test(); //I want to display here "I am A"
}
}

并尝试从 A 类的 C 方法 Test 调用(祖 parent 的方法)。但它不起作用。请告诉我一种调用祖 parent 虚拟方法的方法。

最佳答案

你不能 - 因为它会违反封装。如果 B 类想要在 Test 上强制执行某种不变性(或其他),如果 C 类可以绕过它,那将是相当严峻的。

如果您发现自己想要这个,您应该质疑您的设计 - 也许至少您的一个继承关系是不合适的? (我个人倾向于支持组合而不是继承,但这是一个单独的讨论。)

关于c# - 为什么 C# 不支持 base.base?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7648910/

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