这是我在“遗留”代码中到处看到的模式,但现在没有人知道它的起源:
public virtual ICollection<SomeClass> SomeProperty
{
get { return m_SomeProperty; }
set
{
if (m_SomeProperty == value)
return;
m_SomeProperty = value;
}
}
我的问题是,“if”检查的好处是什么?它可以简化为通常的
public virtual ICollection<SomeClass> SomeProperty
{
get { return m_SomeProperty; }
set { m_SomeProperty = value; }
}
没有任何副作用?
答案 0 :(得分:4)
如果班级没有实施INotifyPropertyChanged
但是,如果,如果属性已更改,则应仅触发PropertyChanged
event,而如果分配了相同的值,则不应触发https://nodejs.org/api/cli.html#cli_node_options_options。该链接包含一个示例。
答案 1 :(得分:0)
如果Target
是私有字段,则无意义。更好的是使用自动属性:
m_SomeProperty
在这种情况下,所有出现的public virtual ICollection<SomeClass> SomeProperty { get; set; }
都应替换为m_SomeProperty
。
如果SomeProperty
是属性本身,则可能产生副作用。在这种情况下,它可以有自己的setter,如果它的新值相同,则不应该触发它。