你可以在一个类中声明一个事件如下:
class A
{
public event EventHandler TestEvent; // 这里:事件名一般大写,用一个委托来定义,委托前面加上关键字event
protected virtual void OnTestEvent(EventArgs e)
{
if(this.TestEvent != null)
{
this.TestEvent(this,e); //这里: 触发事件函数通过委托
}
}
}
今天我很奇怪的是我发现这样一个特点,就是如果我在另一个类中引用A如下:
class B
{
A a;
public B()
{
this.a=new A();
}
void Test()
{
a.TestEvent(this,new EventArgs()); //这里:将出现错误,这是不是说明一种现象见如下分析。(现象1)
}
}
关于现象1,
这表明C#中事件模型默认为,创建事件类才能直接引发该事件,而无法通过外部直接引发。这是不是说明了
事件和委托实例之间存在的差别呢?
另外,事件和消息机制之间的关系由于被net framework本身封装所遮蔽所以无法做出更多的判断,只觉得比较
神秘,需要了解win32 api,以及 hook方面的知识,如果到达net framework 3.0以后,新的winfx不知道会不会
存在一些就此方面的变化,比如让消息更加可以操作,等。