C# 中的委托

C# 中的委托

为了便于理解,可以将委托理解成C/C++ 里面的函数指针

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

namespace 委托
{
    delegate void MyDel(int value);//1.声明委托类型.这个委托类型带一个参数
    class Program
    {
        void PrintLow(int value)
        {
            Console.WriteLine("{0} - Low Value", value);
        }

        void PrintHigh(int value)
        {
            Console.WriteLine("{0} - High Value", value);
        }

        void Method(int value)
        {
            Console.WriteLine("{0} - 给委托添加方法", value);
        }
        #region 委托的基本性质
        static void Main(string[] args)
        {
            Program program = new Program();

            MyDel del, del2; //2.使用该委托类型声明一个委托变量
            MyDel del3;//组合委托
            //创建随机数生成器
            Random rand = new Random();
            int randomValue = rand.Next(99);

            //3.创建委托类型的对象,并把它复制给委托变量。
            //新的委托对象中包括指向某个方法的引用,这个方法和第一步定义的签名和返回值一致
            del = randomValue < 50 ? new MyDel(program.PrintLow) : new MyDel(program.PrintHigh);
            //4.可以像调用方法一样调用委托
            del(randomValue);//执行委托
            del.Invoke(randomValue);//执行委托方式2 

            del2 = new MyDel(program.PrintHigh);

            del3 = del + del2;
            del3 += program.Method;//5.给委托添加方法
            //del3 -= program.Method;//从委托移除方法
            del3.Invoke(randomValue);
        }
        #endregion
    }
}

你可能感兴趣的:(C#)