C#委托

C#委托
一:委托的实质:
委托可以理解为是函数的一个包装,他可以上c#里面的函数当做参数来传递,相当于C++里面的函数指针,C++通过函数指针来获取函数的入口地址,然后通过指针去操作函数。
委托的实质是一个类。
二:委托的使用
委托的定义就是在函数前面添加一个delegate关键字。
public delegate void MyDelegate(type argv1,type argv2,..)
委托和被委托的方法必须一样的地方
1.返回值必须相同
2.参数的个数,类型和顺序必须相同

using System;
using System.Collections.Generic;

namespace MyDelegate
{
    internal class Program
    {
        public delegate void delegateGreeting(string name); //定义委托变量

        public static void Main(string[] args)
        {
            delegateGreeting d = new Program().AmricamanGreeting; //声明委托变量并且实例化委托
            new Program().Greeting("mojinyang", d); //作为参数传递委托

            Console.WriteLine("-------------------------");
            delegateGreeting d1 = null;
            //可以使用+=和-=来形成一个委托链
            d1 += new Program().AmricamanGreeting;
            d1 += new Program().ChineseGreeting;
            new Program().Greeting("mojinyang", d1);
        }

        public void Greeting(string name, delegateGreeting callback)
        {
            callback(name); //调用委托
        }

        public void AmricamanGreeting(string name)
        {
            Console.WriteLine("Hello " + name);
        }

        public void ChineseGreeting(string name)
        {
            Console.WriteLine("你好, " + name);
        }
    }
}

使用委托的顺序是:定义委托类型->声明委托变量->实例化委托->作为参数传递给方法->调用委托

原文地址:https://www.cnblogs.com/kanekiken/p/7560958.html