在Property Setter中,只有在价值不同时设置才有利吗?

Ses*_*ame 2 c# performance properties

我想知道这段代码有什么好处:

    private int _TestID;
    public int TestID
    {
        get 
        { 
            return _TestID;
        }
        set
        {
            if(_TestID != value)
            {
                _TestID = value;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

与此:

    private int _TestID;
    public int TestID
    {
        get 
        { 
            return _TestID;
        }
        set
        {
            _TestID = value;
        }
    }
Run Code Online (Sandbox Code Playgroud)

在我看来,这是以效率的名义完成的(只有设置如果不同),但测试不会花费与初始设置一样长(或更长)的时间吗?我不确定我是否在这里遗漏了一些东西,但我很乐意听到任何评论和解释.

Pie*_*eed 14

将它与RaisePropertyChanged("TestID")(在if中,在设置字段值之后)组合在WPF或其他数据绑定解决方案中常见的事件模式时,它非常有用.

class Something : INotifyPropertyChanged
{
      public int TestID 
      {
           get { return testId; }
           set 
           {
                if (testId != value)
                {
                     testId = value;
                     RaisePropertyChangedEvent("TestID");
                }
           }
      }
 }
Run Code Online (Sandbox Code Playgroud)

  • + 1..i同意这个答案,但在他的例子中没有提到RaisePropertyChanged或任何事件. (2认同)