日期:2014-05-16  浏览次数:20864 次

C#中的委托与事件

定义

  委托是对函数的封装,可以当做给方法的特征制定一个名称。而事件则是委托的一种特殊形式,当发生有意义的事情时,事件对象处理通知过程。事件其实就是设计模式中观察者模式在.NET中的一种实现方式,现在还没接触,以后慢慢理解。

声明委托与事件

 

class Cat
        {
            private string name;
            public Cat (string name)
            {
                this.name = name;
            }
            public delegate void CatShoutEventHandler();//声明委托CatShoutEventHandler
            public event CatShoutEventHandler CatShout;//声明事件CatShout,它的事件类型是委托CatShoutEventHandler
            public void Shout()
            {
                Console.WriteLine("喵,我是{0}.", name);

                if (CatShout !=null )
                {
                    CatShout();//表明执行shout()方法时,如果CatShout中有对象登记事件,则执行CatShout()
                }
            }
        }


 

 class Mouse
        {
            private string name;
            public Mouse (string name)
            {
                this.name = name;
            }
            public void Run()//声明逃跑的方法
            {
                Console.WriteLine("老猫来了,{0}快跑!", name);
            }
        }


 

实例化委托

 static void Main(string[] args)
        {
            //实例化老猫Tom以及老鼠Jnerry和Jack
            Cat cat = new Cat("Tom");
            Mouse mouse1 = new Mouse("Jerry");
            Mouse mouse2 = new Mouse("Jack");

            //将Mouse的Run方法通过实例化委托Cat.CatShoutEventHandler登记到Cat的事件CatShout当中。其中“+=”表示“add_CatShout”的意思
            cat.CatShout += new Cat.CatShoutEventHandler(mouse1.Run);
            cat.CatShout += new Cat.CatShoutEventHandler(mouse2.Run);

            cat.Shout();

            Console.Read();

        }


运行结果

2楼u010542940昨天 18:27
做的不错呀 PS:可以加点对代码的注释
Re: u010926964昨天 18:58
回复u010542940nrabbit
1楼lfmilaoshi昨天 17:23
重要的专业技术概念。多多的积累,点点滴滴的积累带来巨大的变化。