我正在編寫一些代碼,我發(fā)現(xiàn)當(dāng)我創(chuàng)建一個沒有設(shè)置器的新抽象屬性時,我無法在構(gòu)造函數(shù)中設(shè)置它的值。為什么當(dāng)我們使用普通屬性時會出現(xiàn)這種情況?有什么不同?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; }顯然,如果我們想在構(gòu)造函數(shù)中設(shè)置它,我們應(yīng)該使用 protected 或 public setter。
2 回答

烙印99
TA貢獻1829條經(jīng)驗 獲得超13個贊
是的,您有編譯時錯誤,因為不能保證有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;這種情況應(yīng)該怎么辦?
- 2 回答
- 0 關(guān)注
- 145 瀏覽
添加回答
舉報
0/150
提交
取消