2016-10-10 53 views
2

我看到像INotifyPropertyChanged的代表

public event PropertyChangedEventHandler PropertyChanged = delegate { }; 

INotifyPropertyChanged的一個實現我通常實現它像

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

什麼是2和什麼區別/優點/缺點建議用用?

回答

8

不同之處在於,通過初始化PropertyChanged開始的無操作代表,您不必擔心由於沒有訂戶而導致代理是否爲null。在C#6之前,「檢查它是否爲null」方面有點痛苦 - 使用您正在使用的null條件運算符,使用它可能更容易處理沒有訂閱者。另一種方法仍然有效,您甚至可以將它們一起使用 - 這隻會是多餘的。