你的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