拉姆达表达式(Lambda Expressions)
让我们先看一个简单的拉姆达表达式:
x=>x/2
这个表达式的意思是:x为参数,对x进行相应的操作后的结果作为返回值。
通过这个拉姆达表达式,我们可以看到:
这个表达式没有任何类型信息,但这并不代表拉姆达表达式是和类型无关的。在实际运用上,编译器会根据表达式的上下文判断上述x的类型及返回值的类型。例如:
using System;
using System.Linq;
public class LambdaTest
{
static void Main() {
Func<int, double> expr = x => x / 2;
int someNumber = 9;
Console.WriteLine( "Result: {0}", expr(someNumber) );
}
}
上述代码中,加粗部分为拉姆达表达式。Func<>为 delegate System.Func<T,TResult>
上述运行结果为:Result:4
根据我们学习的数学知识,9/2应当结果是4.5,为什么上述结果会是4而不是4.5呢?是因为x是整型,x/2的结果也是整型,虽然在上述我们拉姆达表达式中,我们指明结果是double,但x/2这个表达式,由于x是整型,故计算出来的结果已被截掉小数,然后再转换为double,故结果是4,而不是4.5
要使结果是4.5,则只需定义上述相关语句为 Func<double,double> expr = x => x / 2 即可。
无参数的拉姆达表达式:
using System;
using System.Linq;
public class LambdaTest
{
static void Main() {
int counter = 0;
WriteStream( () => counter++ );
Console.WriteLine( "Final value of counter: {0}",counter );
}
static void WriteStream( Func<int> counter ) {
for( int i = 0; i < 10; ++i ) {
Console.Write( "{0}, ", counter() );
}
Console.WriteLine();
}
}
拉姆达表达式(Lambda Expressions)相关推荐
- java8新特性(拉姆达表达式lambda)
一.函数式接口 函数式接口(functional interface 也叫功能性接口,其实是同一个东西).简单来说,函数式接口是只包含一个方法的接口.比如Java标准库中的java.lang.Runn ...
- 拉姆达表达式 Lambda 表达式(lambda expression)
public string businessTypeInput { get => businessType; set => businessType = value; } public s ...
- java1.8 Lambda拉姆达表达式深入探究
当我们遇到下面情况时: SingleObj.getInstance().setRunnable(new Runnable() {@Overridepublic void run() {} }); 编译 ...
- C#拉姆达(=)表达式
前言: 之前小猪曾经分享过自己对C#委托的一点理解 其实在使用委托的过程中我们会大量的使用拉姆达(=>)表达式 介绍: "Lambda表达式"是一个匿名函数,是一种高效的类似 ...
- 拉姆达表达式 追加 条件判断 ExpressionFuncT, bool
拉姆达表达式 追加 条件判断 Expression<Func<T, bool>> 2014/11/13 14:47:59 虫虫飞520 程序员俱乐部 我要评论(0) ...
- 拉姆达表达式相关知识
拉姆达表达式 拉姆达表达式是创建匿名函数的另一种方法.因此,拉姆达表达式可以赋值给委托.虽然主要在操作LINQ中使用拉姆达表 达式,但是这种表达式也适用于委托和事件. 拉姆达表达式运算符 ...
- 一句话学会拉姆达表达式(JAVA)
LambdaExpress 一 . 理论 1.1 是什么 Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lam ...
- SqlSugar常用查询实例-拉姆达表达式
SqlSugar支持拉姆达表达式查询,匿名对象参数等,相对还是比较方便好用的. 一.查询列表: //查询列表SqlSugarClient db = SugarContext.GetInstance() ...
- C# 匿名方法和拉姆达表达式
"` "`代码如下: using System; using System.Collections.Generic; using System.Linq; using System ...
最新文章
- 怎么查看linux是不是as7u4,Linux下搭建Android开发环境
- RDLC SubReports Exporting to Excel Are Ignored
- Docker 极简入门教程,傻瓜都能看懂!
- HDU 1010 Tempter of the Bone heuristic 修剪
- 小白十分钟-推荐导航栏
- 计算机数学基础模拟试题,计算机数学基础(A)模拟试题.doc
- 嵌入式开发之davinci--- spi 中的时钟极性CPOL和相位CPHA
- echart关系树状图_Echarts关系图-力引导布局
- python3调用js_关于python3运行JS文件的问题
- matlab线性同余发生器,用MATLAB进行随机数模拟--线性同余法
- SpringBoot+RabbitMQ 实现 RPC 调用
- oracle imp00069,imp-00069 如何解决啊?不是字符集问题
- 使用Inno Setup 制作软件安装包详细教程(与开发语言无关)
- 西电考研复试操作系统期末题问题——小题总结
- Android刷新UI导致崩溃的探究——Only the original thread
- Android移动端库存管理系统
- 图片型-半图形封面设计
- 用python爬虫爬取去哪儿4500个热门景点,看看国庆不能去哪儿
- 函数-function(函数的一般形式、命名、定义调用声明、函数的传递方式)
- python大数据毕业设计题目100例