多播委托和事件

事件的创造规则是类型必须是一个委托的类型,也就是说是委托实例化了事件

事例代码如下:

这是两个以后要被委托的方法:

public class EventManager
    {
        //第一个方法
        public void Add(int i,int j) 
        {
            int res = i + j;
            MessageBox.Show(res.ToString());
        }
        //第二个方法
        public void SayHello(int i,int j) 
        {
            MessageBox.Show("hello word"+(i*j).ToString());
        }

    }

这是委托以及时间的创造过程,包括了多播委托,每次创建一个新的委托放在事件上,就要新new一次委托,如此会创建一个委托队列:

        //创建委托
        public delegate void Num(int i, int j);
        //根据委托实例化事件,这里的事件只需要实例化一次
        public event Num caculate;

        private void button1_Click(object sender, EventArgs e)
        {
            EventManager em = new EventManager();
            //使用委托重载参数相同的实现方法
            Num num = new Num(em.Add);
            //使用事件绑定委托Add方法
            caculate += num;
            //使用事件绑定第二个说helloWord的方法
            caculate += new Num(em.SayHello);
            //在这里只需要对事件穿第一次参数,事件的参数就会传入到每一个委托的方法里面执行得到不同的结果
            this.caculate(5,5);
        }

 

posted @ 2015-04-25 09:27  洛晨随风  阅读(599)  评论(0编辑  收藏  举报