用作 INotifyPropertyChanged 属性 时双重比较安全吗?
Is double comparsion safe when used as INotifyPropertyChanged property?
通常你不能确定检查两个不同双打是否相等。使用 INotifyPropertyChange
时双 属性 怎么样?
以下可能会给 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));
}
}
}
从double
比较来看,这一行:
if (this.optionXYZ != value)
没有多大意义,因为浮点数的性质和特殊值,如 NaN
。
但这里唯一的 "problem" 是 PropertyChanged
事件的额外加注。其实这不是问题,和"safety".
没有关系
关于您的示例 - 我会完全删除相等性检查。
通常你不能确定检查两个不同双打是否相等。使用 INotifyPropertyChange
时双 属性 怎么样?
以下可能会给 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));
}
}
}
从double
比较来看,这一行:
if (this.optionXYZ != value)
没有多大意义,因为浮点数的性质和特殊值,如 NaN
。
但这里唯一的 "problem" 是 PropertyChanged
事件的额外加注。其实这不是问题,和"safety".
关于您的示例 - 我会完全删除相等性检查。