语法糖
指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。
需要声明的是“语法糖”这个词绝非贬义词,它可以给我们带来方便,是一种便捷的写法,编译器会帮我们做转换,而且可以提高开发编码的效率,在性能上也不会带来损失。
备注:本节只介绍与linq相关的语法糖
更多语法糖介绍:C#十种语法糖
语法糖:Lambda表达式
Lambda表达式是比匿名方法更简洁的一种匿名方法语法
最基本的Lambda表达式语法:
{参数列表}=>{方法体}
例如:
(int x)=>{returm x+1}
说明:
1、参数列表中的参数类型可以是明确类型或推断类型
2、如果是推断类型,则参数的数据类型将由编译器根据上下文自动推断出来
如果参数列表只包含一个推断类型参数时:
参数列表=>{方法体}
前提:x的数据类型可以根据上下文推断出来
x =>{returm x+1}
如果方法体只包含一条语句时:
{参数列表}=>表达式
{int x} => x+1;
Lambda表达式示例:
1、多参数,推断类型参数列表,表达式方法体
(x,y) => x*y
2、无参数,表达式方法体
() => Console.WriteLine()
3、多参数,推断类型参数列表,多语句方法体,需要使用{}
(x,y) => {Console.WriteLine(x);Console.WriteLine(y)}
Lambda表达式缩写推演
new Func<string,int>(delegate(string str){return str.Length;});//内置委托
delegate(string str){return str.Length;}//匿名方法
(string str)=>{return str.Length};//Lambda表达式
(str)=>str.Length;//让编译器推断类型
str=>str>Length;//去掉不必要的括弧
#region Lambda表达式
//标准语法
MyDelegate my1 = (string name) => { return "Lambda表达式:hello" + name; };
Console.WriteLine(my1("tom"));
//或者(仅有一个参数) 参数列表只包含一个推断类型参数
MyDelegate my2 = name => { return "Lambda表达式:hello" + name; };
Console.WriteLine(my2("tom"));
//或者(方法体只有一条语句)
MyDelegate my3 = name => "Lambda表达式:hello" + name;
Console.WriteLine(my3("tom"));
#endregion
语法糖:匿名类和匿名方法
匿名类型
有时候你定义的类只是用来封装一些相关的数据,但并不需要相关联的方法、事件和其他自定义的功能。同时,这个类