让我们先看一个简单的拉姆达表达式:

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)相关推荐

  1. java8新特性(拉姆达表达式lambda)

    一.函数式接口 函数式接口(functional interface 也叫功能性接口,其实是同一个东西).简单来说,函数式接口是只包含一个方法的接口.比如Java标准库中的java.lang.Runn ...

  2. 拉姆达表达式 Lambda 表达式(lambda expression)

    public string businessTypeInput { get => businessType; set => businessType = value; } public s ...

  3. java1.8 Lambda拉姆达表达式深入探究

    当我们遇到下面情况时: SingleObj.getInstance().setRunnable(new Runnable() {@Overridepublic void run() {} }); 编译 ...

  4. C#拉姆达(=)表达式

    前言: 之前小猪曾经分享过自己对C#委托的一点理解 其实在使用委托的过程中我们会大量的使用拉姆达(=>)表达式 介绍: "Lambda表达式"是一个匿名函数,是一种高效的类似 ...

  5. 拉姆达表达式 追加 条件判断 ExpressionFuncT, bool

    拉姆达表达式 追加 条件判断 Expression<Func<T, bool>> 2014/11/13 14:47:59  虫虫飞520   程序员俱乐部   我要评论(0) ...

  6. 拉姆达表达式相关知识

    拉姆达表达式 拉姆达表达式是创建匿名函数的另一种方法.因此,拉姆达表达式可以赋值给委托.虽然主要在操作LINQ中使用拉姆达表        达式,但是这种表达式也适用于委托和事件. 拉姆达表达式运算符 ...

  7. 一句话学会拉姆达表达式(JAVA)

    LambdaExpress 一 . 理论 1.1 是什么 ​ Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lam ...

  8. SqlSugar常用查询实例-拉姆达表达式

    SqlSugar支持拉姆达表达式查询,匿名对象参数等,相对还是比较方便好用的. 一.查询列表: //查询列表SqlSugarClient db = SugarContext.GetInstance() ...

  9. C# 匿名方法和拉姆达表达式

    "` "`代码如下: using System; using System.Collections.Generic; using System.Linq; using System ...

最新文章

  1. 怎么查看linux是不是as7u4,Linux下搭建Android开发环境
  2. RDLC SubReports Exporting to Excel Are Ignored
  3. Docker 极简入门教程,傻瓜都能看懂!
  4. HDU 1010 Tempter of the Bone heuristic 修剪
  5. 小白十分钟-推荐导航栏
  6. 计算机数学基础模拟试题,计算机数学基础(A)模拟试题.doc
  7. 嵌入式开发之davinci--- spi 中的时钟极性CPOL和相位CPHA
  8. echart关系树状图_Echarts关系图-力引导布局
  9. python3调用js_关于python3运行JS文件的问题
  10. matlab线性同余发生器,用MATLAB进行随机数模拟--线性同余法
  11. SpringBoot+RabbitMQ 实现 RPC 调用
  12. oracle imp00069,imp-00069 如何解决啊?不是字符集问题
  13. 使用Inno Setup 制作软件安装包详细教程(与开发语言无关)
  14. 西电考研复试操作系统期末题问题——小题总结
  15. Android刷新UI导致崩溃的探究——Only the original thread
  16. Android移动端库存管理系统
  17. 图片型-半图形封面设计
  18. 用python爬虫爬取去哪儿4500个热门景点,看看国庆不能去哪儿
  19. 函数-function(函数的一般形式、命名、定义调用声明、函数的传递方式)
  20. python大数据毕业设计题目100例

热门文章

  1. kav 优化设置(转)
  2. 苹果5壁纸_东京食尸鬼的超酷炫壁纸,绝对不会令人失望的哦!!!
  3. Windows10蓝屏解决方案
  4. redis@redis
  5. python requests模块解析html_用python3教你任意Html主内容提取
  6. Mathematica和Wolfram语言面向数学的入门指南:极坐标
  7. PostgreSQL索引类型
  8. 让你的微信公众平台中支持QQ在线客服功能
  9. 扶持中小企业就是扶持社会
  10. 怎么注销异地的医保卡