Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数。通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数。 Lambda 表达式对于编写 LINQ 查询表达式特别有用。若要创建 Lambda 表达式,需要在 Lambda 运算符 => 左侧指定输入参数(如果有),然后在另一侧输入表达式或语句块。例如,lambda 表达式 x => x * x 指定名为 x 的参数并返回 x 的平方值

using System;

namespace NewAttr
{
/// <summary>
/// Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数。
/// Lambda 表达式对于编写 LINQ 查询表达式特别有用。
/// </summary>
public class LambdaDemo
{
public LambdaDemo() { }
/// 委托不能重载,即委托名称相同,参数类型,个数不同。
/// 构造委托的时候,根本不管参数,当然也就不知道你要构造的是哪个委托。
private delegate int del(int x);
private delegate int del2(int x, int s);
private delegate void del3();
public static void Test()
{
del myDel1 = x => x * x;
del myDel2 = (x) => x * x;
del myDel3 = (x) => x * x;
del myDel4 = (int x) => x * x;
del myDel5 = (int x) => { return x * x; };
Console.WriteLine("del myDel1 = x => x * x :{0}", myDel1());
Console.WriteLine("del myDel2 = (x) => x * x :{0}", myDel2());
Console.WriteLine("del myDel3 = (x) => x * x :{0}", myDel3());
Console.WriteLine("del myDel4 = (int x) => x * x :{0}", myDel4());
Console.WriteLine("del muDel5 = (int x) =>{1}:{0}", myDel5(), " { return x * x; } ");
del3 myDel6 = () => Test2();
Console.WriteLine("--------------------------------");
myDel6();
} public static void Test2()
{
del2 myDel2 = (x, y) => x * y;
del2 myDel3 = (int x, int y) => x * y;
del2 myDel4 = (int x, int y) => { return x * y; };
Console.WriteLine("del2 myDel2 = (x, y) => x * y :{0}", myDel2(, ));
Console.WriteLine("del2 myDel3 = (int x, int y) => x * y :{0}", myDel3(, ));
Console.WriteLine("del2 myDel4 = (int x, int y) => {1} :{0}", myDel4(, ), "{ return x * y; }");
Console.WriteLine("--------------------------------");
FunTest();
} public static void FunTest()
{
///其中 Func 是最多具有十六个输入参数的任何一个 Func 委托
///之后一个为返回值。
///Func<TResult>,Func<T,TResult>,Func<T,.....T,TResult>
Func<int> myFunc = () => ;
Console.WriteLine("Func<int> myFunc = () => 1 :{0}", myFunc());
Func<int, string, int> myFunc2 = (x, y) => x + y.Length;
Console.WriteLine("Func<int, string, int> myFunc = (x, y) => x + y.Length :{0}", myFunc2(, "jasonhua")); ///其中 Action 是最多具有十六个输入参数的任何一个 Action 委托
Action myAction = () => { Console.WriteLine("Action myAction :1 * 1"); };
myAction();
Action<int, int> myAction2 = (x, y) => { Console.WriteLine("Action<int, int> myAction2 = (x, y) :{0}", x * y); };
myAction2(,);
}
}

其他的基础功能

1.  C#高级功能(四)扩展方法和索引

2. C#高级功能(三)Action、Func,Tuple

3. C#高级功能(二)LINQ 和Enumerable类

4. C#高级功能(一)Lambda 表达式

5. C#中泛型的解释(object,list,var,dynamic的区别)

6. C#中委托

7. C#和.NET版本对比

C#高级功能(一)Lambda 表达式的更多相关文章

  1. Java 高级特性: Lambda 表达式

    本文源代码上传到了码云,请点击 LambdaExpression 获取.Lambda 表达式是 java 8 的新特性,本文讲解了 lambda 表达式的所有知识.内容涉及到 lambda 表达式是什 ...

  2. 第十二篇 .NET高级技术之lambda表达式

    最近由于项目需要,刚刚学完了Action委托和Func<T>委托,发现学完了委托就必须学习lambda表达式,委托和Lambda表达式联合起来,才能充分的体现委托的便利.才能使代码更加简介 ...

  3. C#3.0新增功能08 Lambda 表达式

    连载目录    [已更新最新开发文章,点击查看详细] Lambda 表达式是作为对象处理的代码块(表达式或语句块). 它可作为参数传递给方法,也可通过方法调用返回. Lambda 表达式广泛用于: 将 ...

  4. Lambda表达式 简介 语法 示例

    Lambda 表达式也称为闭包,是匿名类的简短形式.Lambda 表达式简化了[单一抽象方法声明接口]的使用,因此 lambda 表达式也称为功能接口. 在 Java SE 7 中,单一方法接口可使用 ...

  5. 大数据之路week06--day03(jdk8新特性 Lambda表达式)

    为什么使用Lambda表达式?(做为初学者接触这个新的语法,会很懵逼,说道理,我在接触到这一块的时候,语法规则我看到了也很懵逼,因为这个和逻辑的关系不是很大,但就是作为一种新的语法出现,一时间很难接受 ...

  6. Java 学习笔记(11)——lambda 表达式

    在写Java代码的时候,如果某个地方需要一个接口的实现类,一般的做法是新定义一个实现类,并重写接口中的方法,在需要使用的时候new一个实现类对象使用,为了一个简单的接口或者说为了一个回调函数就得额外编 ...

  7. Kotlin——从无到有系列之高级篇(一):Lambda表达式

    如果您对Kotlin很有兴趣,或者很想学好这门语言,可以关注我的掘金,或者进入我的QQ群大家一起学习.进步. 欢迎各位大佬进群共同研究.探索 QQ群号:497071402 进入正题 经过前面一系列对K ...

  8. 动态创建Lambda表达式实现高级查询

    需求简介 最近这几天做的东西总算是回归咱的老本行了,给投资管理项目做一个台账的东西,就是类似我们的报表.其 中有一个功能是一个高级查询的需求,在查询条件方面大概有7.8个查询条件.需求就是如果一个条件 ...

  9. C#高级知识点概要(3) - 特性、自动属性、对象集合初始化器、扩展方法、Lambda表达式和Linq查询

    1.特性(Attributes) 特性(Attributes),MSDN的定义是:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法 ...

随机推荐

  1. JBPM的引擎内核学习

    http://atongyeye.iteye.com/blog/2093505 流程引擎 http://www.cnblogs.com/aspnetx/archive/2009/09/24/15735 ...

  2. C语言sizeof陷阱

    执行以下程序,查看输出: #include <stdio.h> #define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0])) int  ...

  3. 在UltraEdit的查找和替换中使用正则表达式 (转)

    很多朋友都用过或者正在用UltraEdit,这个编辑器陪伴我也好几年了,从很多地方影响着我写代码的快捷键习惯,Ultraedit提供了非常丰富的编辑功能,其中非常重要的查找和替换功能一定大家都用过,U ...

  4. flex使用buttonbar为viewstack添加导航功能

    先建立一个Main.mxml的应用程序,作为一个主程序,再建立两个component ,一个是jiaju.mxml ,另一个是dianqi.mxml. Main.mxml:  <?xml ver ...

  5. C#中的委托,匿名方法和Lambda表达式

    简介 在.NET中,委托,匿名方法和Lambda表达式很容易发生混淆.我想下面的代码能证实这点.下面哪一个First会被编译?哪一个会返回我们需要的结果?即Customer.ID=.答案是6个Firs ...

  6. MySQL的体系结构

    因为MySQL采用的是客户机/服务器体系结构,所以你在使用MySQL存取数据时,必须至少使用两个或者说两类程序: 一个位于存放您的数据的主机上的程序 ----数据库服务器.数据库服务器监听从网络上传过 ...

  7. PC上安装MAC X Lion

    PC上安装MACXLion 网上关于如何在PC下安装MAC的文章已近不少了,但对于一些初学者在实践当中会遇到各种问题,以下视频资料为大家展示两种虚拟机安装MacOS. 1.VmwareWorkstat ...

  8. WWF3入门<第一篇>

    工作流是什么东西?暂时还不是很弄得清除. 工作流是用来解决什么问题的?暂时只是形成了一个很模糊的概念,还没办法用语言描述出来. 一.入门范例 以VS2008为例,先来创建一个WWF程序. 在工具箱中, ...

  9. rel="stylesheet" 描述

    <link type="text/css" rel="stylesheet" href="css/style.css"/> re ...

  10. (笔记)angular 的根据后台StateCode本地显示指定文案