属性的获取是抽象的,集合是虚拟的吗?

时间:2010-06-06 19:11:24

标签: c# properties

我有一个像这样的基类:

public class Trajectory{
    public int Count { get; set; }
    public double Initial { get; set { Count = 1; } }
    public double Current { get; set { Count ++ ; } }
}

所以,我在基类中有代码,这使得set-s成为虚拟,但是get-s必须保持抽象。所以我需要这样的东西:

...
public double Initial { abstract get; virtual set { Count = 1; } }
...

但是这段代码会出错。 重点是在基类中实现计数器功能,而不是在所有派生类中实现。 那么,我如何使用不同的修饰符来创建属性的get和set?

3 个答案:

答案 0 :(得分:11)

将其分为两个功能:

public double Initial
{
    get { return GetInitial(); }
    set { SetInitial(value); }
}

protected virtual void SetInitial(double value)
{
    Count = 1;
}

protected abstract double GetInitial();

答案 1 :(得分:1)

既不抽象也不虚拟。并将支持字段设为私有。这样,派生类不能覆盖它,也不能弄乱它。

答案 2 :(得分:0)

不,你不能。至少我还没有找到解决方案。

如果属性标记为abstract,那么它的getter和setter都不能包含实体。