现在的位置: 首页 > 综合 > 正文

C#之事件体会(一)

2013年09月19日 ⁄ 综合 ⁄ 共 605字 ⁄ 字号 评论关闭

你可以在一个类中声明一个事件如下:

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不知道会不会

存在一些就此方面的变化,比如让消息更加可以操作,等。

抱歉!评论已关闭.