C#检查set访问器中的值

时间:2016-06-25 09:58:15

标签: c# set accessor

如何在优化目标方面做得更好?

public SpeedGraphModel SpeedGraphModel
{
    get { return _speedGraphModel; }
    set { 
            if (_speedGraphModel == value)
                return;

            _speedGraphModel = value; 
        }
}

public SpeedGraphModel SpeedGraphModel
{
    get { return _speedGraphModel; }
    set { _speedGraphModel = value; }
}

我认为string类型会更好而不检查,但对于其他类型?

2 个答案:

答案 0 :(得分:0)

添加另一个条件检查而不是设置变量值,即使它相等也是多余的。

最佳情况如果它们相等,您将进行1次操作(条件) 最坏的情况您将进行2次操作(条件+分配)。

而不是设置变量,无论什么。 => 1次操作。

答案 1 :(得分:0)

当您在设置值上调用某些逻辑时,通常会使用此类检查(不仅仅是设置它)。例如,在桌面(WPF / WinForms)或移动(Xamarin)中,您可以实现自己的属性,该行为与Dependency属性类似,并在其中调用OnPropertyChanged()方法。它可以在更新后用于刷新视图的项目等。这样,即使您为项目设置了相同的值,然后调用OnPropertyChanged(),它也会更新可能影响性能的部分视图,所以你想在这里做一个额外的检查。

如果你只有一个普通的属性,唯一的责任是在没有任何逻辑的情况下在私有字段内设置值,你不需要额外的检查,因为它是冗余的,不会提高你的性能。