ゲッターとセッターの両方が再帰的に自分自身を呼び出します。
いいえ、コンパイラは自動的にバッキング フィールドを作成しません。次のように自動的に実装されたプロパティを使用しない限り、そうではありません。
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;
ノーオペレーションになります。これは、ほとんどの読者が期待することです。
次のように、2 つのプロパティを使用する方がよいでしょう。
private VoltageRange { get; set; }
private EffectiveVoltageRange { get { return VoltageRange * 1.1f; } }