我有一个像这样的基类:
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?
答案 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都不能包含实体。