委托和事件

委托例子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace shijian2
{
    class Program
    {

        public delegate void MyHandler(string str);


        static void Main(string[] args)
        {
            Program pro = new Program();
            MyHandler mh= new MyHandler(pro_Myevent);//相当于把mh是一个引用指向pro_Myevent()这个方法。
            mh("dsaf");//可以调用该方法!
        }

        static void pro_Myevent(string str)
        {
            Console.WriteLine(str);
            Console.ReadKey();
        }
    }
}
委托和事件结合:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace shijian2
{
    class Program
    {

        public delegate void MyHandler(string str);//声明委托
        public  event MyHandler Myevent;//声明事件

        static void Main(string[] args)
        {
            Program pro = new Program();
            pro.Myevent += new MyHandler(pro_Myevent);//事件引用可以指向多个委托,这是添加的方法。
            pro.Myevent("abc");//调用方法,这里也叫事件触发!
        }

        static void pro_Myevent(string str)
        {
            //pro.Myevent -= new MyHandler(pro_Myevent);
            Console.WriteLine(str);
            Console.ReadKey();
        }
    }
}

 

总结:事件必须是特定委托的子类。上述两个DEMO本质还是一样的。

posted @ 2013-06-28 19:22  吴加跃  阅读(106)  评论(0)    收藏  举报