public class greetmanager

    {

        public delegate void greetdelegate(string name);

       public event greetdelegate dele1;

        public void greetpeople(string name)

        {

            dele1(name);

           

        }

        private void nihao(string name)

        {

            Console.WriteLine(name + "早上好啊!");

        }

}

在reflector 中查看代码

 


 

 

 

在c#中声明一个事件,实际生成的代码是一个private字段和 两个 public方法 add,和remove 既+=,和-=

不管事件是不是声明为public,它总是被声明为private的字段,所以可以访问类的事件的注册方法却不能调用注册到事件的函数,因为事件本身被声明为一个私有字段

  greetmanager mgm = new greetmanager();
            mgm.dele1 += Egreet;
            mgm.dele1 += Cgreet;

 是正确的,但

mgm.dele1("jenson");

就会产生编译错误.


 

posted on 2008-10-20 10:57  ayajenson  阅读(319)  评论(0编辑  收藏  举报