unity c# Lambda表达式
来源:互联网 发布:手机汉化软件 编辑:程序博客网 时间:2024/06/03 18:42
Lambda表达式是写在委托实例上的匿名方法。编译器立即将lambda表达式转换成下面两张情形其中的一种;
1 委托实例
2 Expression<Tdelegate>类型的表达式树,该表达式树将lambda表达式内的代码显示为可遍历的对象模式。这使得对lambda表达式的解释可以延迟大运行时。
下面的委托类型:
delegate int Transformer(int i);
可以指定和调用下面的x=>x*x lambad表达式
Transformer sqr = x => x*x;
int data = sqr(3); //9
Lambda表达式有以下形式:
(参数) => 表达式或语句块
为了方便,在只有一个可推测类型的参数时,可以省略小括号
本例中,只有一个参数x,表达式是x*x:
x => x*x;
Lambda表达式使每一个参数和委托的参数一致,表达式的类型(可以为void)和委托的返回值类型一致
本例中,x和参数i一致,表达式是x*x和返回类型int一致,因此它和Transformer委托相兼容:
delegate int Transformer(int i);
Lambda表达式代码除了可以是表达式还可以是语句块。我们可以把上例改写成:
x => {return x*x;};
Lambda表达式通常和Func或Action委托一起使用,因此可以将前面的表达式写成下面的形式:
Func<int,int>sqr = x => x*x;
int Action<int> sqr = x => x*x;
下面是一个带两个参数的表达式实例:
Func<string,string,int>totalLength = (s1,s2) => s1.Length + s2.Length;
int total = totalLength("hello","world"); //total的值为10
明确指定Lambda参数类型
编译器通常可以根据上下文推断出lambda参数的类型。但当不能推断时,必须明确指定每个参数的类型。例如下面的表达式:
Func<int,int>sqr = x => x*x;
编译器可以推断出x是int 型。也可以显示指定x的类型:
Func<int,int>sqr = (int x)=>x*x;
- unity c# Lambda表达式
- Unity Lambda表达式
- C# Lambda 表达式
- C# Lambda 表达式
- C#的Lambda表达式
- C# Lambda 表达式
- C# Lambda 表达式
- C#3.0 lambda表达式
- C# Lambda表达式
- C# Lambda表达式
- C# Lambda表达式
- C#中Lambda表达式
- C# 中Lambda表达式
- C# Lambda 表达式
- c#的Lambda表达式
- C#中的Lambda表达式
- C# Lambda表达式
- C#的Lambda 表达式
- C#Hello World
- 2015年读书总结
- CentOs中的Mysql 下载安装
- Python学习笔记4-如何快速的学会一个Python的模块、方法、关键字
- File类2
- unity c# Lambda表达式
- Hadoop历史服务器详解
- File类3 文件读取
- 全屏Dialog实现方法
- Laplace变换性质
- 构造函数
- char字节数、char与byte、byte数组合并 Java
- JavaScript Uncaught SyntaxError: Unexpected token )(…)
- Servlet中文乱码处理