gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 08:06:03 24 4
gpt4 key购买 nike

在实现 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;

打扰我了。我经常这样做,但我不确定它是否需要也不是很好。毕竟,如果调用者分配了完全相同的值,我不想重新分配该字段,尤其是通知我的订阅者该属性已更改,而语义上它没有。

除了通过使 UI 免于更新可能在屏幕上看起来相同的内容/无论什么媒体来节省一些 CPU/RAM/等,我们还能得到什么?

有些人是否可以通过在属性上重新分配相同的值来强制刷新(但这不是一个好的做法)?

<强>1。我们应该这样做还是不应该这样做?

<强>2。为什么?

最佳答案

是的,当消费者设置的属性值等于已经被持久化的值时,您应该立即返回。

首先,没有理由在属性的 setter 中浪费任何时间或资源——值已经设置,因此不需要进一步的操作。此外,如果存储在属性的支持字段中的值未更改,则永远不要调用 OnPropertyChanged - 该方法旨在在值更改时引发,而不是在属性的 setter 已被调用。

话虽这么说,但如果 setter 没有调用 OnPropertyChanged,我就不会费心先检查该值。对于仅设置支持字段的值而没有其他任何设置的简单 setter ,始终设置值实际上会更快,而不是先检查再设置值。仅当属性的 setter 具有不应触发或可能导致不必要的性能损失的附加逻辑时才使用此模式。

关于c# - 如果分配了相同的值,setter 是否应该立即返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2623697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com