在接口中定义事件

一直以为C#的接口中不能定义事件呢, 因为我们知道接口中不能定义变量.

(现在才发现Event并不是定义变量, 而是定义了两个方法, 其IL如下:)
 
Code
  

 可以看到, 我们定义的事件ddd, 被展开成了两个函数add_ddd和remove_ddd, 而且是抽象的, 需要我们在子类中实现.

那如何在子类中实现这个两个函数呢?  如下:

class my : MyInterface
    {
        public event Mydelegate ddd;

        public void Fire()
        {
            ddd.BeginInvoke(10, null, null);
        }
    }


注意: 我们定义自己的Delegate时,  其实编译器把它展开为了一个类, IL如下:

Code



 

posted @ 2008-07-10 17:15  Simon.guo  阅读(1574)  评论(0编辑  收藏  举报