接口中包含两个事件的定义ProcessChangedEvent和ProcessChangedEvent2,
但是实现类里面并没有使用两个事件,而是使用了一个事件和一个事件属性访问器。
这说明接口中定义的事件可以用事件或者事件访问器实现。
给事件和访问器添加监听方法的代码来看是一样的:
bc.ProcessChangedEvent += new ProcessChangedHandler(bc_ProcessChangedEvent);
bc.ProcessChangedEvent2 += new ProcessChangedHandler(bc_ProcessChangedEvent2);
但是区别是什么呢?
事件的属性访问器不能用来触发事件。
就是说:
ProcessChangedEvent(); 是可以的,
但是ProcessChangedEvent2(); 是错误的。
而且在子类SubClass中不能触发父类BaseClass中定义的公开事件。
这是出于什么考虑呢,各位飘过的是否能给点说法?!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
后来又研究一下,发现事件是可以被覆盖的。
class SubClass:BaseClass
{
public override event ProcessChangedHandler ProcessChangedEvent;
public override void Show()
{
ProcessChangedEvent();
}
}
另外似乎事件只能被定义它的类内部才能调用,其他地方只能是添加监听方法?求解了~~