《C#图解教程(第五版)》- 14.6 组合委托

委托可以使用额外的运算符来“组合”,这个运算最终会创建一个新的委托。

示例:如下代码创建了3个委托

using System;

namespace ConsoleApp5
{
    //声明委托类型
    delegate void MyDel(int x);

    class myInstObj
    {
        //实例方法
        public void MyM1(int x)
        {
            Console.WriteLine($"Print MyDel:{x}");
        }
    }

    class SClass
    {
        //静态方法
        public static void OtherM2(int x)
        {
            Console.WriteLine($"Print OtherM2:{x*2}");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            //委托中使用的是实例方法,则需要通过类的实例来调用方法,即使用“new 类名 (). 方法名”的形式。
            MyDel delA = new MyDel(new myInstObj().MyM1);

            //委托中使用的是静态方法,在向委托中传递方法名时只需要用“类名.方法名”的形式。
            MyDel delB = new MyDel(SClass.OtherM2);

            //调用列表
            MyDel delC=delA+delB;

            //调用委托
            delC(3);
        }
    }
}

执行上面的代码,效果如下图所示。

未经允许不得转载:透视数据 » 《C#图解教程(第五版)》- 14.6 组合委托