私はクライアントの一人と再利用するためにいくつかのプロジェクトをリファクタリングしています。私はプロパティ設定者の1人を書き直す決定を正当なものにしたいと考えています。このプロパティ設定の条件は有効ですか?
私はコードベースでこの実装を数回見ましたが、もはやここで動作しない開発者によって書かれたので、私は彼にそれについて尋ねることはできません。
次のようにそれが行く:
private double _myProperty;
public double MyProperty
{
get { return _myProperty; }
set
{
if (!(Math.Abs(_myProperty - value) < double.Epsilon))
{
_myProperty = value;
OnPropertyChanged();
}
}
}
私は、プロパティのセッターのために、次の構文を書くと非常によく知って:
if (value != _myProperty)
しかし、私が行方不明です場合、私は疑問に思ってきた上記の最初の例では何か。私はMath.Abs計算が 'value'と '_myProperty'の現在の値の差を与えていることを知っていますが、doubleとの比較はなぜですか?Epsilon? IntelliSenseとMSDNの両方によると、double.Epsilonは "0より大きい最小の正のdouble値を表します"。だから、確かに比較すると、同じように簡単にすることができます
if (Math.Abs(_myProperty - value) > 0)
以前の開発者は、単に不必要に複雑であること、または私はまだカバーされていないのC#のいくつかの小さなニュアンスをしないのですましたか?
ありがとう、私はEpsilonのより適切な値を使用するように更新します – Dmihawk