小编Mar*_*arc的帖子

为什么 INotifyPropertyChanged 的​​ SetProperty() 方法需要一个 ref 参数?

考虑到 INotifyPropertyChanged 的​​实现通常如下所示:

    public class Observable : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        protected void SetProperty<T>(ref T storage, T value, [CallerMemberName]string propertyName = null)
        {
            if (Equals(storage, value))
            {
                return;
            }

            storage = value;
            OnPropertyChanged(propertyName);
        }

        protected void OnPropertyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
Run Code Online (Sandbox Code Playgroud)

为什么该SetProperty方法需要 ref 参数?几乎不可能将类字段以外的任何内容传递给该方法,因此无论如何它应该始终是引用类型?

注意:我问这个问题是因为我想将此方法用于通过foreach循环枚举的项目,该方法不适用于ref关键字。

c# ref inotifypropertychanged

1
推荐指数
1
解决办法
452
查看次数

标签 统计

c# ×1

inotifypropertychanged ×1

ref ×1