博客
关于我
(.net core 3.1)Lambada表达式的前世今生以及演变过程
阅读量:635 次
发布时间:2019-03-14

本文共 2820 字,大约阅读时间需要 9 分钟。

(.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的本质呢其实右边的匿名方法,其实呢就是个方法**

转载地址:http://zlqoz.baihongyu.com/

你可能感兴趣的文章
Webpack 之 basic chunk graph
查看>>
Mysql5.7版本单机版my.cnf配置文件
查看>>
mysql5.7的安装和Navicat的安装
查看>>
mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
查看>>
Mysql8 数据库安装及主从配置 | Spring Cloud 2
查看>>
mysql8 配置文件配置group 问题 sql语句group不能使用报错解决 mysql8.X版本的my.cnf配置文件 my.cnf文件 能够使用的my.cnf配置文件
查看>>
MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
查看>>
MYSQL8.0以上忘记root密码
查看>>
Mysql8.0以上重置初始密码的方法
查看>>
mysql8.0新特性-自增变量的持久化
查看>>
Mysql8.0注意url变更写法
查看>>
Mysql8.0的特性
查看>>
MySQL8修改密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
查看>>
MySQL8修改密码的方法
查看>>
Mysql8在Centos上安装后忘记root密码如何重新设置
查看>>
Mysql8在Windows上离线安装时忘记root密码
查看>>
MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
查看>>
mysql8的安装与卸载
查看>>
MySQL8,体验不一样的安装方式!
查看>>
MySQL: Host '127.0.0.1' is not allowed to connect to this MySQL server
查看>>