asp.net 委托讲解

委托市一中特殊的对象类型,它定义了方法的类型,使得可以方法当作另一个方法的参数进行传递,其特殊指出在于,我们以前定义的所有对象都包含数据,而委托包含的只是方法的地址,下面是代码:

 class Program

    {

        static void Main(string[] args)

        {

            DelegateTest test = new DelegateTest();

            // 特别注意:传递的为事件的地址指针

            test.Dowork("唐雷", test.sayChinese);

            test.Dowork("tl", test.sayChinese);

            Console.ReadKey();

            //下面为多播的演示  特别注意:传递的为事件的地址指针

            ConsoleApplication1.DelegateTest.saySomething saytest = test.sayEnglish;

            saytest += test.sayChinese;

            test.Dowork("唐雷", saytest);

        }

    }

    class DelegateTest

    {

        /// <summary>

        /// 定义一个委托,名为saySomething

        /// </summary>

        /// <param name="name">名称</param>

        public delegate void saySomething(string name);

        /// <summary>

        /// 通过传递的方法名来执行不同的委托事件

        /// </summary>

        /// <param name="name">名称</param>

        /// <param name="MakeSay">委托类型的变量(注意:地址指针)</param>

        public void Dowork(string name, saySomething MakeSay)

        {

            MakeSay(name);

        }

        /// <summary>

        /// 说英语

        /// </summary>

        /// <param name="name"></param>

        public void sayEnglish(string name)

        {

            Console.WriteLine("hello,"+name);

        }

        /// <summary>

        /// 说中文

        /// </summary>

        /// <param name="name"></param>

        public void sayChinese(string name)

        {

            Console.WriteLine("你好," + name);

        }

    }

运行后的结果:

原文地址:https://www.cnblogs.com/xlhblogs/p/2176321.html