1. 为什么使用委托
由于三个方法中,只有一句代码不同。可以考虑将三个方法简化为一个,并将不同的部分作为参数传入上述方法中。将一个方法作为参数传递给另一个方法,传递方法的类型,定义位委托类型。
2. 委托概念
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 委托概念 { class Program { //将一个方法作为另一个方法的参数时,前面的方法可使用委托 //委托的定义应与其所对应的函数的标签一致 //函数标签,指函数的返回值和参数 public delegate void Dele(string name); static void Main(string[] args) { //1.1 初始化委托,并直接调用 //Dele dele = new Dele(SayHiChinese); //dele("喵"); //1.2 初始化委托 //Dele dele = SayHiChinese; //dele("喵"); //1.3 使用匿名函数初始化委托 //Dele dele = delegate(string name) //{ // Console.WriteLine("匿名 " + name); //}; //dele("喵"); //2. 委托作为另一个方法的参数 //Test("cat", SayHiChinese); //3. 用匿名函数初始化委托 //可避免声明多个函数,用于当函数只使用一次时 //Test("dog", delegate(string name) //{ // Console.WriteLine("Anonymouse " + name); // Console.ReadKey(); //}); //4. lamda表达式( => goes to)和委托 Dele dele = (string name) => { Console.WriteLine("lamda表达式" + name); }; dele("cat"); } public static void Test(string name, Dele dele) { dele(name); } public static void SayHiChinese(string name) { Console.WriteLine("你好吗? " + name); Console.ReadKey(); } public static void SayHiEnglish(string name) { Console.WriteLine("How are you?" + name); Console.ReadKey(); } } }