C#之事件体会(一)

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值