私はこの場合absを使うことができますが、私は不思議です。3つの演算子が原因でStackOverflowExceptionが発生する
public float maxThrotle{
set { maxThrotle = value < 0 ? -value : value; //this line causes problem
}
get { return maxThrotle; }
}
私はこの場合absを使うことができますが、私は不思議です。3つの演算子が原因でStackOverflowExceptionが発生する
public float maxThrotle{
set { maxThrotle = value < 0 ? -value : value; //this line causes problem
}
get { return maxThrotle; }
}
プロパティセッターからプロパティセッターを呼び出そうとすると、無限ループが発生しています。
次のようにあなたはおそらく、値を格納するプライベートバッキングフィールドを作成したい:
private float maxThrotle;
public float MaxThrotle {
set { maxThrotle = value < 0 ? -value : value; //this line causes problem
}
get { return maxThrotle; }
}
注私は、ほとんどのC#のコーディング標準に従い、大文字を使用するプロパティの名前を変更しました。
(また、スロットのスロットは、ダブル-t-で綴られています)。
ああ、それはとても恥ずかしいです! とにかく、あなたの返事をありがとう。私のプログラミング教師は、C#の最新バージョンでは、追加のプライベート変数を実装する必要はないと言いました...しかし、彼は間違っていたか、彼を誤解しました。 – user3387666
getterとsetterで特別なロジックが必要ない場合は、 'public float MaxThrottle {get;セット; } 'これは' private float _#maxThrottle;と同じです。 public float MaxThrottle {get {return _#maxThrottle; } set {_#maxThrottle = value;} }} '(コンパイラは、それ以外の場合は無効な名前を持つバッキングフィールド' _#maxThrottle'を生成するので、プロパティを除いてアクセスすることはできません)。ただし、カスタムゲッターとセッターを実装する場合は、バッキングフィールドも実装する必要があります。 – CompuChip
設定者がmaxThrotleプロパティを割り当てます。 maxThrotleプロパティを割り当てるセッターを実行します。 maxThrotleプロパティを割り当てるセッターを実行します。 maxThrotleプロパティを割り当てるセッターを実行します。 maxThrotleプロパティを割り当てるセッターを実行します。 maxThrotleプロパティを割り当てるセッターを実行します。 maxThrotleプロパティを割り当てるセッターを実行します。 maxThrotleプロパティを割り当てるセッターを実行します。 maxThrotleプロパティを割り当てるセッターを実行するのは... Kaboom! –
getterはmaxThrotleプロパティを読み取ります。 maxThrotleプロパティを読み取るgetterを実行します。 maxThrotleプロパティを読み取るgetterを実行します。 maxThrotleプロパティを読み取るgetterを実行します。 maxThrotleプロパティを読み取るgetterを実行します。 maxThrotleプロパティを読み取るgetterを実行します。 maxThrotleプロパティを読み取るgetterを実行します。 maxThrotleプロパティを読み取るgetterを実行します。 maxThrotleプロパティを読み取るgetterを実行します。どちらが..カブーム! –
あなたはHansを繰り返しています。老いてくる? ;) –