2016-06-25 130 views
0

我看到一個可觀察隊列類here的實現。我發現了兩件事我不明白: 1.事件,名稱PropertyChanged和CollectionChanged已經在基類中定義。爲什麼你不必使用'新'?類層次結構中的事件

public virtual event NotifyCollectionChangedEventHandler CollectionChanged; 

2.將PropertyChanged事件以simelar方式聲明爲屬性。你爲什麼這樣做?

protected virtual event PropertyChangedEventHandler PropertyChanged; 
event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged 
{ 
    add { this.PropertyChanged += value; } 
    remove { this.PropertyChanged -= value; } 
} 

回答

1

我看不到在定義PropertyChangedCollectionChanged的基類中的哪個位置。在我看來,這些可以在沒有new關鍵字的ObservableStack<T>中定義。

而且,INotifyPropertyChanged.PropertyChanged事件的實現正在明確完成,所以它必須使用事件訪問器語法,即addremove

+0

只是再看看答案,你是對的。認爲基類是ObservableCollection。謝謝! – R3turnz

-1

這是對事件的慣例,事件僅僅是在代表一個包裝,所以當你定義一個事件你指定什麼樣的代表將註冊此事件,然後你可以添加或刪除代表註冊這個事件。