类层次结构中的事件

时间:2016-06-25 11:00:36

标签: c# events

我看到了一个可观察队列类here的实现。我找到了两件我不理解的东西: 1.具有名称PropertyChanged和CollectionChanged的事件已在基类中定义。为什么你不必使用'new'?

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; }
 }

2 个答案:

答案 0 :(得分:1)

我无法看到基类中定义PropertyChangedCollectionChanged的位置。在我看来,这些可以在ObservableStack<T>中使用new关键字进行定义。

此外,INotifyPropertyChanged.PropertyChanged事件的实现正在明确完成,因此必须使用事件访问器语法,即addremove

答案 1 :(得分:-1)

这是事件的约定,事件只是代理的包装,因此当您定义事件时,您指定将为此事件注册哪种代理,然后您可以添加或删除委托注册此事件。