你的getter和你的setter都會遞歸地調用它們自己。
沒有,編譯器不會自動爲您創建一個支持字段 - 除非你使用一個自動實現的屬性是這樣的:
public float VoltageRange { get; set; }
每當您提供的getter/setter機構,你必須這樣做全部自己。
這聽起來像你想:
private float _voltageRange;
private float VoltageRange
{
get { return _voltageRange + ((10F/100F)*_voltageRange); }
set { _voltageRange = value; }
}
或者更簡單:(或只是1.1F乘法,但將有數據丟失的多一點的可能性)
private float _voltageRange;
private float VoltageRange
{
get { return (_voltageRange * 11)/10; }
set { _voltageRange = value; }
}
請注意,這是一個非常奇怪的屬性 - 值集與檢索到的值不同。通常是這樣的:
VoltageRange = VoltageRange;
將是無操作的。這是大多數讀者期望。
它可能會更好,有兩個屬性,就像這樣:
private VoltageRange { get; set; }
private EffectiveVoltageRange { get { return VoltageRange * 1.1f; } }
我認爲編譯器只提供支持字段,如果你使用默認的getter/setter,例如{get;組; } – 2012-08-01 19:13:53
遞歸調用是這裏的問題/問題 – MethodMan 2012-08-01 19:14:07
除了遞歸導致的問題之外,爲什麼使用'10F/100F'而不是'0.1F'? – 2012-08-01 19:18:23