我想知道这段代码有什么好处:
private int _TestID;
public int TestID
{
get
{
return _TestID;
}
set
{
if(_TestID != value)
{
_TestID = value;
}
}
}
VS。这样:
private int _TestID;
public int TestID
{
get
{
return _TestID;
}
set
{
_TestID = value;
}
}
在我看来,这是以效率的名义进行的(只有设置如果不同),但是测试不会花费那么长(或更长)的初始设置吗?我不确定我是否在这里遗漏了一些东西,但我很乐意听到任何评论和解释。
答案 0 :(得分:14)
将它与RaisePropertyChanged(“TestID”)(在if中,在设置字段值之后)组合在WPF或其他数据绑定解决方案中常见的事件模式时非常有用。
class Something : INotifyPropertyChanged
{
public int TestID
{
get { return testId; }
set
{
if (testId != value)
{
testId = value;
RaisePropertyChangedEvent("TestID");
}
}
}
}
答案 1 :(得分:1)
这是我很乐意留给编译器的优化类型。我不愿意“强迫”在每种情况下可能会或可能不会产生效率。
答案 2 :(得分:0)
真的,我认为第一个例子在涉及复杂类型和运算符重载时会引起更多问题。在这种特殊情况下,第一个例子毫无意义。
答案 3 :(得分:0)
如果性能是这里唯一的问题,我会选择第一个....即使性能有所不同,也会太小而无法注意到。
这也是不必要的代码行扩展。
答案 4 :(得分:0)
我认为您提供的示例代码并不完全正确。 你是说这个吗?
private int _TestID;
public int TestID
{
get
{
return _TestID;
}
set
{
if (_TestID != value)
{
_TestID = value;
}
}
}
这种结构的原因我也不清楚。但是,如果 _TestID 是属性而不是 int ,那么这种构造可能会有所帮助,因为设置 _TestID 可以这种情况很昂贵。