gpt4 book ai didi

C# 总是从基类调用基方法

转载 作者:太空宇宙 更新时间:2023-11-03 20:01:05 24 4
gpt4 key购买 nike

假设我们有以下类:

class A {
public virtual int Number { get { return 1; } }

public int Foo(){
return Number;
}
}

class B : A{
public override int Number { get { return 2; } }
}

如预期的那样,如果我在 B 类的实例上调用 Foo 方法,我将得到 2。是否可以更改 Foo 方法,使其始终使用基数 A.Number属性(property)(并返回1)?像这样的东西:

public int Foo(){
return A.Number;
}

最佳答案

您试图将“真实”功能放在虚拟成员中,并让非虚拟成员以非虚拟方式公开它。那是……真的行不通。也就是说,您需要做的就是颠倒这个概念:

class A
{
public virtual int Number { get { return Foo(); } }

public int Foo()
{
return 1;
}
}

“真实”定义在非虚拟成员中,虚拟成员只是调用它。这确保您只需编写一次功能,同时仍将其暴露在虚拟和非虚拟庄园中。

关于C# 总是从基类调用基方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28239292/

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