匿名函数和委托

新建一个控制台应该程序:

 如下是匿名函数和委托以及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参数。

原文地址:https://www.cnblogs.com/juneyss/p/10932154.html