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); } } }
使用委托的顺序是:定义委托类型->声明委托变量->实例化委托->作为参数传递给方法->调用委托