你尝试过这样的事吗?
public class Example{ private TValue _value; public TValue Value { get { return _value; } set { if (!object.Equals(_value, value)) { _value = value; OnPropertyChanged("Value"); } } } }
请注意,这将导致值类型的拳击惩罚. (4认同)
Jon Skeet.. 7
三种选择:
限制TValue实现IEquatable
然后调用x.Equals(y)
取另一个类型参数IEqualityComparer
并使用它
使用EqualityComparer
进行比较
您总是可以混合和匹配选项2和3,当然 - 默认为默认比较器,但也允许提供特定的比较器.
你尝试过这样的事吗?
public class Example{ private TValue _value; public TValue Value { get { return _value; } set { if (!object.Equals(_value, value)) { _value = value; OnPropertyChanged("Value"); } } } }
三种选择:
限制TValue实现IEquatable
然后调用x.Equals(y)
取另一个类型参数IEqualityComparer
并使用它
使用EqualityComparer
进行比较
您总是可以混合和匹配选项2和3,当然 - 默认为默认比较器,但也允许提供特定的比较器.