我正在重構我們的一些項目,以便與我們的客戶之一重新使用,我希望能夠理智地檢查重寫其中一個屬性設置者的決定。此屬性設置器中的條件是否有效?
我已經看到了這在執行我們的代碼庫幾次,但因爲它是由一個開發誰不再在這裏工作,我不能問他這件事。
它去如下:
private double _myProperty;
public double MyProperty
{
get { return _myProperty; }
set
{
if (!(Math.Abs(_myProperty - value) < double.Epsilon))
{
_myProperty = value;
OnPropertyChanged();
}
}
}
我很熟悉,寫屬性setter的語法如下:如果我丟失
if (value != _myProperty)
但在上面第一個例子我一直想知道一些東西。我知道Math.Abs計算給了我'價值'和'_myProperty'的當前值之間的差異,但爲什麼與double.Epsilon進行比較呢?根據IntelliSense和MSDN,double.Epsilon「代表大於零的最小正雙倍值」。所以肯定是比較可以很容易爲:
if (Math.Abs(_myProperty - value) > 0)
是以前開發商只是被不必要地複雜化,還是我失去了C#的一些小的細微差別我還沒有介紹嗎?
謝謝,我會更新它爲Epsilon使用更合適的值 – Dmihawk