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是否立即返回?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)