gpt4 book ai didi

c# - 防止方法在 C# 中被重写

转载 作者:IT王子 更新时间:2023-10-29 04:46:01 24 4
gpt4 key购买 nike

如何防止方法在派生类中被覆盖?

在 Java 中,我可以通过在我希望防止被覆盖的方法上使用 final 修饰符来做到这一点。

如何在 C# 中实现相同的功能?
我知道使用 sealed 但显然我只能将它与 override 关键字一起使用?

class A
{
public void methodA()
{
// Code.
}

public virtual void methodB()
{
// Code.
}
}

class B : A
{
sealed override public void methodB()
{
// Code.
}
}

所以在上面的例子中我可以防止 methodB() 被类 B 派生的任何类覆盖,但是我如何防止类 B 从一开始就覆盖 methodB()

更新:当我发布这个问题时,我在 A 类的 methodB() 声明中错过了 virtual 关键字。更正了它。

最佳答案

您无需执行任何操作。 virtual 修饰符指定一个方法可以被覆盖。省略它意味着该方法是“最终的”。

具体来说,方法必须是virtualabstractoverride 才能被覆盖。

使用 new 关键字将允许隐藏基类方法,但它仍然不会覆盖它,即当您调用 A.methodB() 时,您将得到基类版本,但如果您调用 B.methodB(),您将获得新版本。

关于c# - 防止方法在 C# 中被重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9914908/

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