委托和事件C#演示代码

class Cat
{
    private string _name;
    public Cat(string name)
    {
        _name = name;
    }

    public void Shout()
    {
        Console.WriteLine("瞄,我是"+_name+",我来了!");
        CatShout();        //第三步,触发点,事件要加括号
    }

    public delegate void CatShoutEventHandler();    //第一步,声明委托,要加圆括号

    public event CatShoutEventHandler CatShout;        //第二步,声明事件,类型为以上委托类型
}

class Mouse
{
    public string _name;
    public Mouse(string name)
    {
        _name = name;
    }

    public void Run()
    {
        Console.WriteLine("猫来了,我是"+_name+",快跑!");
    }
}

static void Main(string[] args)
{
    Cat cat=new Cat("Tom");
    Mouse jerry=new Mouse("Jerry");
    Mouse jack=new Mouse("Jack");

    cat.CatShout += new Cat.CatShoutEventHandler(jerry.Run);    //第四步,将相关方法的委托登记到事件
    cat.CatShout += new Cat.CatShoutEventHandler(jack.Run);

    cat.Shout();
    Console.ReadLine();
}

1、委托是对函数的封装,一旦为委托分配了方法,委托将具有与该方法完全相同的行为。

2、关于事件和委托的关系,可以看作容器和元素的关系,事件是委托的容器,容器(事件)里可以装(登记)许多元素(委托)。当执行事件时,会逐个执行在该事件中登记的委托。

 

使用委托和事件的步骤:

1、声明委托

2、声明事件,事件类型为以上委托的类型

3、确定触发点

4、将引用方法的委托注册到事件

具体代码可参考最上。

posted @ 2015-03-04 12:38  疯狂的拖鞋  阅读(232)  评论(0编辑  收藏  举报