我看到了像
这样的INotifyPropertyChanged的实现public event PropertyChangedEventHandler PropertyChanged = delegate { };
我通常像
那样实现它protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
2和建议使用的有什么区别/优点/缺点?
答案 0 :(得分:8)
不同之处在于,通过初始化PropertyChanged
并启动了无操作代理,您不必担心代理是否为null
,因为存在没有订阅者。
在C#6之前,"检查它是否为空"方面有点痛苦 - 使用您使用的空条件运算符,只是使用它来处理没有订阅者可能更简单。另一种方法仍然有效,你甚至可以将它们一起使用 - 它只是多余的。