2016-06-25 3 views
0

Я видел реализацию наблюдаемого класса очереди here. Я нашел две вещи, которые я не понимаю: 1. события, с именами PropertyChanged и CollectionChanged, уже определены в базовом классе. Почему вам не нужно использовать «новое»?События в иерархии классов

public virtual event NotifyCollectionChangedEventHandler CollectionChanged; 

2. Событие PropertyChanged объявляется аналогичным образом для свойства. Зачем ты это делаешь?

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

ответ

1

Я не вижу, где в базовом классе определены PropertyChanged и CollectionChanged. Мне кажется, что они могут быть определены в ObservableStack<T> без ключевого слова new.

Кроме того, реализация события INotifyPropertyChanged.PropertyChanged выполняется явно, поэтому он должен использовать синтаксис доступа к событию, то есть add и remove.

+0

Просто посмотрел на ответ, и вы правы. Думал, что базовый класс - ObservableCollection. Благодаря! – R3turnz

-1

Это соглашение для события, события просто обертка над делегатами, поэтому при определении события вы указываете, какие делегаты зарегистрировать бы для этого события, а затем вы можете добавить или удалить регистрацию делегата это событие ,

Смежные вопросы