2016-10-10 1 views
2

sah ich eine Implementierung von INotifyPropertyChanged wieINotifyPropertyChanged Delegierter

public event PropertyChangedEventHandler PropertyChanged = delegate { }; 

ich es in der Regel implementieren wie

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

Was ist der Unterschied/Vorteile/Nachteile zwischen 2 und was wird empfohlen Gebrauch zu benutzen?

Antwort

8

Der Unterschied ist nur, dass PropertyChanged mit einem No-op Delegierten durch Initialisierung mit zu beginnen, brauchen Sie keine Sorgen zu machen, ob die Delegierten ist null aufgrund dort keine Abonnenten sind.

Vor C# 6 war der Aspekt "Überprüfen, ob es Null ist" ein wenig schmerzhaft - mit dem Operator mit Nullbedingung, den Sie verwenden, ist es wahrscheinlich einfacher, das nur zu verwenden, da es keine Abonnenten gibt. Der andere Ansatz funktioniert jedoch immer noch, und Sie können sie sogar zusammen verwenden - es wird nur überflüssig sein.