2016-03-30 8 views
0

Обычно вы не можете быть уверены в проверке равенства двух разных пар. Как насчет двойного свойства при использовании INotifyPropertyChange?Является ли двойное сравнение безопасным при использовании в качестве свойства INotifyPropertyChanged?

Возможны ли следующие проблемы для if (this.optionXYZ != value) или это безопасно использовать?

private double optionXYZ; 
public double OptionXYZ 
{ 
    get { return this.optionXYZ; } 
    set 
    { 
     if (this.optionXYZ != value) 
     { 
      this.optionXYZ = value; 
      OnPropertyChanged(PropertyOf<OptionSettings>.Resolve(x => x.OptionXYZ)); 
     } 
    } 

} 
+0

опцияXYZ это просто поле типа double. Я не вижу причин, почему это будет проблемой. –

+0

Почему вы думаете, что 'INotifyPropertyChange' помогает решить проблему с природой арифметики вычислений с плавающей запятой? –

+0

@DiligentKeyPresser - Я хотел удостовериться, что INotifyPropertyChange не продолжает стрелять, поскольку проверка равенства никогда не будет равна из-за округления. – pathDongle

ответ

1

С точки double сравнения, эта линия:

if (this.optionXYZ != value) 

не имеет особого смысла, так как в природе чисел с плавающей запятой и специальные значения, как NaN.

Но единственная «проблема» здесь - экстра-рейз PropertyChanged. Собственно, это не проблема и не имеет ничего общего с «безопасностью».

О вашем образце - я бы вообще удалил проверку равенства.

 Смежные вопросы

  • Нет связанных вопросов^_^