你的 getter 和你的 setter 都递归地调用自己。
不,编译器不会自动为您创建支持字段 - 除非您使用这样的自动实现的属性:
public float VoltageRange { get; set; }
每当您提供 getter/setter 主体时,您都必须自己完成。
听起来你想要:
private float _voltageRange;
private float VoltageRange
{
get { return _voltageRange + ((10F/100F)*_voltageRange); }
set { _voltageRange = value; }
}
或者更简单地说:
private float _voltageRange;
private float VoltageRange
{
get { return (_voltageRange * 11) / 10; }
set { _voltageRange = value; }
}
(或者只是乘以 1.1f,但这会增加数据丢失的可能性。)
请注意,这是一个非常奇怪的属性 - 值集与检索到的值不同。通常是这样的:
VoltageRange = VoltageRange;
将是无操作的。这是大多数读者所期望的。
拥有两个属性可能会更好,如下所示:
private VoltageRange { get; set; }
private EffectiveVoltageRange { get { return VoltageRange * 1.1f; } }