C#委托总结-匿名方法&Lambda表达式

时间:2021-08-05 18:57:58

1,匿名方法

 匿名方法可以在声明委托变量时初始化表达式,语法如下

C#委托总结-匿名方法&Lambda表达式

 

 之前写过这么一段代码:

    delegate void MyDel(string value);
    class Program
    {
        void Print1(string value)
        {
            Console.WriteLine("方法1:{0}", value);
        }
        void Print2(string value)
        {
            Console.WriteLine("方法2:{0}", value);
        }
        void Print3(string value)
        {
            Console.WriteLine("方法3:{0}", value);
        }
        /// <summary>
        /// 执行委托方法
        /// </summary>
        /// <param name="d">委托类型参数</param>
        /// <param name="value">委托内方法的参数</param>
        void PrintFun(MyDel d, string value)
        {
            d(value);
        }
        static void Main(string[] args)
        {
            Program p = new Program();
            MyDel del1, del2;//声明委托变量
            del1 = p.Print1;
            del2 = p.Print2;
            p.PrintFun(del1, "已运行");
            p.PrintFun(del2, "已运行");
            Console.ReadKey();
        }
    }

现在可以改成这样:

    delegate void MyDel(string value);
    class Program
    {/// <summary>
        /// 执行委托方法
        /// </summary>
        /// <param name="d">委托类型参数</param>
        /// <param name="value">委托内方法的参数</param>
        void PrintFun(MyDel d, string value)
        {
            d(value);
        }
        static void Main(string[] args)
        {
            Program p = new Program();

//匿名方法 Console.WriteLine("\n运行匿名方法"); MyDel d1 = delegate(string value) { Console.WriteLine("方法1:{0}", value); }; MyDel d2 = delegate(string value) { Console.WriteLine("方法2:{0}", value); }; p.PrintFun(d1, "以匿名方法运行"); p.PrintFun(d2, "以匿名方法运行"); Console.ReadKey(); } }

 

2,Lambda表达式

C#委托总结-匿名方法&Lambda表达式

匿名方法的简化

 

    delegate void MyDel(string value);
    class Program
    {
        /// <summary>
        /// 执行委托方法
        /// </summary>
        /// <param name="d">委托类型参数</param>
        /// <param name="value">委托内方法的参数</param>
        void PrintFun(MyDel d, string value)
        {
            d(value);
        }
        static void Main(string[] args)
        {
            Program p = new Program();//Lambda表达式
            Console.WriteLine("\n运行Lambda表达式");
            MyDel d3 = value => Console.WriteLine("方法3:{0}", value);
            p.PrintFun(d3, "以Lambda表达式运行");

            Console.ReadKey();
        }
    }