Lambda的三种写法

一、历史版本

  delegate void StudentDelegate(string name, int age);
   public class LambdaTest
    {
        public void Show()
        {
            DateTime dateTime = DateTime.Now;
            //历史
            //版本1
            {
                StudentDelegate student = new StudentDelegate(PrintStudent);
                student("葛优", 1);
            }
        }
   }

  public void PrintStudent(string name,int age)
        {
            Console.WriteLine($"我的名字是:{name},我的年龄是{age}");
        }

二、版本二:访问局部变量

  delegate void StudentDelegate(string name, int age);
   public class LambdaTest
    {
        public void Show()
        {
            DateTime dateTime = DateTime.Now;
            //版本2(这样写的话可以访问局部变量)
            {
                StudentDelegate student = new StudentDelegate( delegate (string name, int age)
                {
                    Console.Write(dateTime);
                    Console.WriteLine($"我的名字是:{name},我的年龄是{age}");
                });
                student("王朝伟", 1);
            }
        }
   }

三、版本三: “=>”

 delegate void StudentDelegate(string name, int age);
   public class LambdaTest
    {
        public void Show()
        {
            DateTime dateTime = DateTime.Now;
            //版本3(=>念成gose to)
            {
                StudentDelegate student = new StudentDelegate((string name, int age)=>
                {
                    Console.Write(dateTime);
                    Console.WriteLine($"我的名字是:{name},我的年龄是{age}");
                });
                student("刘德华", 1);
            }
            {
                Action action = () => Console.WriteLine("无返回值,无参数");
                Action<DateTime> action1 = d => { Console.WriteLine( $"带一个参数:{d}"); };
                action1(dateTime);

                Action<DateTime, int> action2 = (d, i) => { Console.WriteLine(  $"带两个参数:{ d} ,{ i}"); };
                action2(dateTime, 3);

                Func<DateTime> func=()=>{ return DateTime.Now; };//带返回值
                DateTime dateTime1 = func();//调用Lambda获取值 
                Console.WriteLine(dateTime1);

                Func<DateTime> func2 = () => DateTime.Now;//带返回值
                Console.WriteLine(func2());
            }
        }
   }
posted @ 2022-03-30 17:11  码农阿亮  阅读(99)  评论(0编辑  收藏  举报