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. iOS UILabel详解

    1.创建 CGRect rect = CGRectMake(100, 200, 50, 50); UILabel *label = [[UILabel alloc] initWithFrame:rec ...

  2. C#(Visual Studio) AssemblyInfo

    AssemblyInfo .NET Project的Properties文件夹下会自动生成一个AssemblyInfo.cs的文件,该文件包含的信息和项目->右键->属性->Appl ...

  3. windows7环境下svn服务器的配置及使用

    一.安装 1 软件准备: Setup-Subversion-1.7.8 TortoiseSVN-1.7.11.23600-win32-svn-1.7.8 2 安装: 安装个人的需要设定好安装路径. 3 ...

  4. Python计算程序运行时间

    方法1 import datetime starttime = datetime.datetime.now() #long running endtime = datetime.datetime.no ...

  5. Django基础篇之数据库选择及相关操作

    在djanjo框架中我们最常用的框架分别就是mysql和sqlit了,下面我们将分别讲述一下这俩种数据库的基础必备知识 mysql 一.利用命令创建(在终端上执行) 1.首先创建一个project项目 ...

  6. android网络判断

    //ConnectivityManager管理网络连接相关的操作 ConnectivityManager connectivityManager = (ConnectivityManager) con ...

  7. Cnetos7下,已经能访问tomcat

    进入/usr/local/apache-tomcat-8.0.24/bin 中 执行:./startup.sh开启tomcat 再执行如下 systemctl stop firewalld.servi ...

  8. java中byte转换int时为何与0xff进行与运算

    在剖析该问题前请看如下代码 public static String bytes2HexString(byte[] b) {  String ret = "";  for (int ...

  9. 菜鸟学WEB开发 ASP.NET 5.0 1.0

    在学习之初我要强调一点“微软要向跨平台开发”大举进军了,不管他能走多远,这是微软的必经之路. 一.学习流程: 创建ASP.NET APPLICATION 项目——项目结构——结构分析. 1.创建ASP ...

  10. ASP.NET验证控件一

    为了更好地创建交互式Web应用程序.加强应用程序安全性,程序开发人员应该对用户输入的内容进行验证. ASP.NET提供了一系列输入验证控件,使用这些控件用户可以很方便地实现输入验证. ASP.NET还 ...