《C#图解教程(第五版)》- 14.5 给委托赋值

由于委托是引用类型,可以通过给它赋值来改变包含在委托变量中的引用。旧的委托对象会被垃圾回收器回收。

示例:下面的代码设置并修改了delVar的值

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)
        {
            //创建一个委托变量
            MyDel delVar;

            //委托中使用的是实例方法,则需要通过类的实例来调用方法,即使用“new 类名 (). 方法名”的形式。
            delVar = new MyDel(new myInstObj().MyM1);

            //调用委托
            delVar(3);

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

            //调用委托
            delVar(4);
        }
    }
}
未经允许不得转载:透视数据 » 《C#图解教程(第五版)》- 14.5 给委托赋值