gpt4 book ai didi

c# - 无法覆盖属性的保护集

转载 作者:太空狗 更新时间:2023-10-29 21:19:01 25 4
gpt4 key购买 nike

我有以下基类:

abstract class Base
{
public abstract object Var
{
get;
protected set;
}
}

这个派生类:

class Derived : Base
{
public override object Var
{
get {//code here
}
set {//code here -- I get error here!
}
}
}

但是我收到了这个错误:

Cannot change access modifier when overriding 'protected' inherited member 'Var'

我尝试在 set 之前添加 protectedprivate 关键字,但没有帮助。我该如何解决?

更新:
基类必须确保子类在创建时为Var 提供值。所以我需要在基类中声明 setter。
或者,我可以声明一个私有(private)成员变量来执行此操作并删除 setter,但这不是讨论的选项 here .

最佳答案

问题是派生类中的 set 具有 public 可见性——因为您没有明确指定 protected。由于此属性的集合在您的基类中具有 protected 可见性,因此您会收到错误

cannot change access modifiers when overriding 'protected' inherited member

您可以通过在派生类中为集合提供 protected 可见性来修复它:

class Derived : Base {
public override object Var {
get { return null; }
protected set { // <------ added protected here
}
}
}

关于c# - 无法覆盖属性的保护集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8689884/

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