新建一个控制台应该程序:
如下是匿名函数和委托以及lambda对比
public delegate void GreetingDelegate(string name); static void Main(string[] args) { GreetingDelegate greetDelegate = new GreetingDelegate(GreetToPeople.ChineseGreeting); //C# 2.0 Anonymous method GreetingDelegate greetA = delegate (string s) { Console.WriteLine("Morning:" + s); }; //C# 3.0 lambda expression GreetingDelegate greetB = (X) => { Console.WriteLine("Morning:" + X); }; greetDelegate("小明"); greetA("小A"); greetB("小B"); Console.ReadLine(); }
新建一个GeetPeople方法
public class GreetToPeople { public static void EnglishGreeting(string name) { Console.WriteLine("Morning, " + name); } public static void ChineseGreeting(string name) { Console.WriteLine("早上好, " + name); } }
匿名方法的优点:减少了代码量;
使用匿名方法必须遵守两个原则:
(1)在匿名方法中不能使用跳转语句(break,go或continue)跳到该匿名方法的外部,反之亦然:匿名方法外部的跳转语句不能跳到该匿名方法的内部。
(2)在匿名方法外部不能访问不安全的代码。也不能在匿名方法外部使用 ref和out参数。