gpt4 book ai didi

c# - 覆盖获取,但不设置

转载 作者:IT王子 更新时间:2023-10-29 03:40:51 24 4
gpt4 key购买 nike

我有一个抽象类,它定义了一个get,但没有定义set,因为就那个抽象类而言,它只需要一个get.

public abstract BaseClass
{
public abstract double MyPop
{get;}
}

但是,在一些派生类中,我需要一个set属性,所以我在看这个实现

public class DClass: BaseClass
{
public override double MyPop
{get;set;}
}

问题是,我得到一个编译错误,说的是

*.set: cannot override because *. does not have an overridable set accessor.

尽管我认为上面的语法是完全合法的。

对此有什么想法吗?解决方法,或者为什么会这样?

编辑:我能想到的唯一方法是将getset都放在抽象类中,让子类抛出NotImplementedException 如果 set 被调用并且没有必要。那是我不喜欢的东西,还有 special setter method .

最佳答案

一个可能的答案是覆盖 getter,然后实现一个单独的 setter 方法。如果您不想在基类中定义属性 setter ,您没有太多其他选择。

public override double MyPop
{
get { return _myPop; }
}

public void SetMyPop(double value)
{
_myPop = value;
}

关于c# - 覆盖获取,但不设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2026546/

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