C# 类层次结构中的事件

C# 类层次结构中的事件,c#,events,C#,Events,我看到了一个可观察队列类的实现。我发现有两件事我不明白: 1.名为PropertyChanged和CollectionChanged的事件已在基类中定义。为什么不必使用“new” public virtual event NotifyCollectionChangedEventHandler CollectionChanged; 二,。PropertyChanged事件以simelar方式声明为属性。你为什么这么做 protected virtual event PropertyChange

我看到了一个可观察队列类的实现。我发现有两件事我不明白: 1.名为PropertyChanged和CollectionChanged的事件已在基类中定义。为什么不必使用“new”

public virtual event NotifyCollectionChangedEventHandler CollectionChanged;
二,。PropertyChanged事件以simelar方式声明为属性。你为什么这么做

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

这是事件的惯例,事件只是代表的包装,因此,在定义事件时,您可以指定将为此事件注册的代理类型,然后可以添加或删除此事件的代理注册。

我看不到在基类中定义了
PropertyChanged
CollectionChanged
的位置。在我看来,这些可以在
observestack
中定义,而不需要
new
关键字


另外,
INotifyPropertyChanged.PropertyChanged
事件的实现是显式完成的,因此它必须使用事件访问器语法,即
add
remove

刚刚再次查看了答案,您是对的。认为基类是可观察的集合。谢谢