gpt4 book ai didi

c# - INotifyPropertyChanged 的​​ OnPropertyChanged 参数

转载 作者:行者123 更新时间:2023-11-30 13:36:18 25 4
gpt4 key购买 nike

我正在进入 MVVM 并偶然发现调用此 MWE 中显示的 OnPropertyChanged 函数的两个版本:

public class SampleModel : INotifyPropertyChanged
{
private string _name;

public string Name
{
get { return _name; }
set
{
if (value == _name) return;
_name = value;
// Version 1
OnPropertyChanged();
// Version 2
OnPropertyChanged(nameof(Name));
}
}

#region INotifyPropertyChanged members
public event PropertyChangedEventHandler PropertyChanged;

[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
}

为什么我会选择版本 1 而不是版本 2,反之亦然?

最佳答案

由于 [CallerMemberName] 属性,OnPropertyChanged(); 调用将自动获取调用它的类成员的名称。

OnPropertyChanged(nameof(Name)); 显式地将属性名称作为输入参数发送到该方法。

因此在您的情况下,这两个调用将导致完全相同的 PropertyChanged 调用。

但如果您在方法或类似的东西中更改 _name 并希望通知订阅者,则显式调用很有用。

关于c# - INotifyPropertyChanged 的​​ OnPropertyChanged 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36459035/

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