一直以来对于刚接触c#的朋友来说(包括我),委托是很麻烦的东西,那究竟什么是委托,而又要怎么去使用呢!
我们习惯于把数据作为参数传递给方法,但是我们可不可以给方法传送另一个方法呢,比喻某个方法的执行的操作并不是针对数据进行的。而是对另一个方法进行操作。听起来有点奇怪。答案是肯定的,这就是我们所说的委托。
还是用例子来说吧
    class DelegateTest
    {
        public delegate void OutPutDelegate(string name);//申明一个委托
        public static void  OutPutText(string name)//定义与委托相关联的方法
        {
            Console.WriteLine(name + "\n");
        }
        static void Main()
        {
             //创建一个委托数组
            OutPutDelegate[] hander ={ new OutPutDelegate(DelegateTest.OutPutText), new OutPutDelegate(DelegateTest.OutPutText) };
            Console.WriteLine("开始调用委托");
            for (int i = 0; i < hander.Length; i++)
            {
                hander[i]("调用委托"+i);//调用委托
            }
            Console.ReadLine();
        }
    }
注意:实际上定义一个委托是指"定义一个新类",派生于基类System.MulticastDelegate的类,而System.MulticastDelegate又派生于System.Delegate.

    委托调用匿名方法
    class DelegateTest
    {
        public delegate void OutPutDelegate(string name);
        static void Main()
        {
            OutPutDelegate hander = delegate(string para)//匿名方法的申明
                {
                    Console.WriteLine(para);
                };
            hander("cnblogs");
            Console.ReadLine();
        }
    }

    本文只是简单的谈了一下c#中的委托,写的不好还请大家多多指教,若需了解详细点击 http://msdn2.microsoft.com/zh-cn/library/0yw3tz5k(VS.80).aspx

转载请注明:http://www.liebo6.com 裂帛服饰