(.net core 3.1)Lambada表达式的前世今生以及演变过程

(.net core 3.1)Lambada表达式的前世今生以及演变过程

直接上代码讲解

  public class LambadaOne
    {
        //lambada 表达式的前世今生

        public delegate void lambadaNoPar();

        public delegate void lambadaTwoPar(string name,string password);

        public delegate void lambadaOnePar(string name);

        public void lambadaShow()
        {
            //原始的调用直接就是个委托
            /*  lambadaNoPar ln = new lambadaNoPar(Show);
              ln.Invoke();
  */
            //演变2 把方法呢直接放在委托里面,用delegate声明,去掉调用方法的 public void  public void Show,只留下括号里面的参数
            /* lambadaNoPar ln = new lambadaNoPar( delegate()
             {
                 Console.WriteLine("qqqqqqq");
             });
             ln.Invoke();*/

            //演变3  去掉 delegate 关键字 在参数后面直接加上=>;       =>是goto的意思
            /* lambadaNoPar ln = new lambadaNoPar( ()=>
             {
                 Console.WriteLine("qqqqqqq");
             });;
             ln.Invoke()*/

            //演变4:当有参数的时候呢,直接去掉参数前面的定义的参数类型
            /* lambadaTwoPar ln = new lambadaTwoPar(( name, password) =>
             {
                 Console.WriteLine("qqqqqqq");
             });
             ln.Invoke(null, null);*/

            //演变5:方法中呢,只有一行代码,直接去掉大括号,这时候呢,其实这个
            /*lambadaTwoPar ln = new lambadaTwoPar(( name, password) => Console.WriteLine("qqqqqqq"));
            ln.Invoke(null, null);*/

            //演变6:直接去掉了 new lambadaTwoPar()
         /*   lambadaTwoPar ln = (name, password) => Console.WriteLine("qqqqqqq");
            ln.Invoke(null, null);*/
            //其中当参数只有一个的时候呢,直接去掉参数的括号
            lambadaOnePar ln = name => Console.WriteLine("qqqqqqq");
            ln.Invoke(null);

            //lambada的本质呢其实右边的匿名方法,其实呢就是个方法



        }


        public void Show()
        {
            Console.WriteLine("qqqqqqq");
        }

        public void Show(string name,string password)
        {
            Console.WriteLine("qqqqqqq");
        }
    }

原始的调用直接就是个委托
lambadaNoPar ln = new lambadaNoPar(Show);
ln.Invoke();
演变2: 把方法呢直接放在委托里面,用delegate声明,去掉调用方法的 public void public void Show,只留下括号里面的参数
lambadaNoPar ln = new lambadaNoPar( delegate()
{
Console.WriteLine(“qqqqqqq”);
});
ln.Invoke()
演变3: 去掉 delegate 关键字 在参数后面直接加上=>; =>是goto的意思
lambadaNoPar ln = new lambadaNoPar( ()=>
{
Console.WriteLine(“qqqqqqq”);
});;
ln.Invoke()
**演变4:**当有参数的时候呢,直接去掉参数前面的定义的参数类型
lambadaTwoPar ln = new lambadaTwoPar(( name, password) =>
{
Console.WriteLine(“qqqqqqq”);
});
ln.Invoke(null, null);
**演变5:**方法中呢,只有一行代码,直接去掉大括号,这时候呢,其实这个方法叫匿名方法
lambadaTwoPar ln = new lambadaTwoPar(( name, password) => Console.WriteLine(“qqqqqqq”));
ln.Invoke(null, null);
**演变6:**直接去掉了 new lambadaTwoPar()
lambadaTwoPar ln = (name, password) => Console.WriteLine(“qqqqqqq”);
ln.Invoke(null, null);
//其中当参数只有一个的时候呢,直接去掉参数的括号
lambadaOnePar ln = name => Console.WriteLine(“qqqqqqq”);
ln.Invoke(null);

        **lambada的本质呢其实右边的匿名方法,其实呢就是个方法**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小盆友你是否很有多问号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值