c# – 如果分配了相同的值,setter是否立即返回?

c# – 如果分配了相同的值,setter是否立即返回?,第1张

概述在实现INotifyPropertyChanged的类中,我经常看到这种模式: public string FirstName { get { return _customer.FirstName; } set { if (value == _customer.FirstName) re 在实现INotifyPropertyChanged的类中,我经常看到这种模式:
public string Firstname    {        get { return _customer.Firstname; }        set        {            if (value == _customer.Firstname)                return;            _customer.Firstname = value;            base.OnPropertyChanged("Firstname");        }    }

精确的线条

if (value == _customer.Firstname)                return;

困扰我我经常这样做,但我不确定它是否需要也不好.毕竟,如果一个调用者分配了相同的值,我不想重新分配该字段,特别是通知我的订阅者该属性已经改变,在语义上它没有.

除了节省一些cpu / RAM / etc,通过释放UI来更新可能在屏幕上看起来相同的东西/ whatever_medium我们获得什么?

有些人可以通过重新分配对物业的同样价值来强制更新(不过这不是一个很好的做法吗?)

我们应该做还是不应该呢?

为什么?

解决方法 是的,您应该在消费者设置的属性值等于已经持久化的值时立即返回.

首先,没有理由浪费物业的任何时间或资源 – 价值已经确定,所以不需要进一步的行动.另外,如果存储在属性的后备字段中的值没有改变,那么您应该永远不要调用OnPropertyChanged – 当调用该属性的setter时更改该值时,该方法将被引发.

然而,所有这一切 – 如果设定者没有打电话给OnPropertyChanged我不会打扰检查的价值.在一个简单的setter的情况下,只设置后备字段的值,没有别的,它实际上会更快地总是设置值而不是首先检查然后设置值.只有当该属性的setter具有不应该触发的附加逻辑或可能引起不必要的性能损失时,才使用此模式.

总结

以上是内存溢出为你收集整理的c# – 如果分配了相同的值,setter是否立即返回?全部内容,希望文章能够帮你解决c# – 如果分配了相同的值,setter是否立即返回?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1260679.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存