我正在写一些代码,我发现当我创建一个没有 setter 的新抽象属性时,我无法在构造函数中设置它的值。为什么当我们使用普通属性时这是可能的?有什么不同?
protected Motorcycle(int horsePower, double cubicCentimeters)
{
this.HorsePower = horsePower; //cannot be assigned to -- it is read only
this.CubicCentimeters = cubicCentimeters;
}
public abstract int HorsePower { get; }
public double CubicCentimeters { get; }
很明显,如果我们想在构造函数中设置它,我们应该使用protected 或public setter。
最佳答案
是的,您有编译时错误,因为无法保证 HorsePower
有一个要分配给的支持字段。想象,
public class CounterExample : Motorcycle {
// What "set" should do in this case?
public override int HorsePower {
get {
return 1234;
}
}
public CounterExample()
: base(10, 20) {}
}
在这种情况下,
this.HorsePower = horsePower;
应该做什么?关于c# - 没有 setter 的抽象属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57432985/