INotifyPropertyChanged代表

时间:2016-10-10 11:53:41

标签: c# wpf

我看到了像

这样的INotifyPropertyChanged的实现
public event PropertyChangedEventHandler PropertyChanged = delegate { };

我通常像

那样实现它
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

2和建议使用的有什么区别/优点/缺点?

1 个答案:

答案 0 :(得分:8)

不同之处在于,通过初始化PropertyChanged并启动了无操作代理,您不必担心代理是否为null,因为存在没有订阅者。

在C#6之前,"检查它是否为空"方面有点痛苦 - 使用您使用的空条件运算符,只是使用它来处理没有订阅者可能更简单。另一种方法仍然有效,你甚至可以将它们一起使用 - 它只是多余的。