前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Lambda表达式

Lambda表达式

作者头像
宿春磊Charles
发布于 2022-03-29 02:18:03
发布于 2022-03-29 02:18:03
27300
代码可运行
举报
文章被收录于专栏:DotNet 致知DotNet 致知
运行总次数:0
代码可运行

这节讲一个C#编程利器:Lambda表达式。

Lambda表达式(Lambda Expression)是C#中一种特殊语法,它的引入,使得匿名方法更加简单易用,最直接的是在方法体内调用代码或者为委托传入方法体的形式与过程变得更加优雅。

Lambda表达式实际上是一种匿名函数,在Lambda表达式中可以包含语句以及运算等操作。并且可用于创建委托或表达式目录树类型,支持带有可绑定到委托或表达式树的输入参数的内联表达式。使用Lambda表达式可大大减少代码量,使得代码更加的优美、简洁,更有可观性。

它的语法为:参数列表=>表达式体

请看一段代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Program
{
    static void Main (string[] args)
    {
        new TestLambda ().GeneralMethod (Show);
    }

    public static void Show ()
    {
        Console.WriteLine ("我是一个方法");
    }

}

class TestLambda
{
    public void GeneralMethod(Action a)
    {
        a.Invoke ();
    }
}

一般我们填充委托,就是正常的传入一个方法,但使用Lambda表达式以后就可以进行将代码简化为如下样式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Program
{
    static void Main (string[] args)
    {
        new TestLambda ().GeneralMethod (() =>
            {
                Console.WriteLine ("我是一个Lambda表达式");
            });
    }
}

class TestLambda
{
    public void GeneralMethod(Action a)
    {
        a.Invoke ();
    }
}

将方法体直接嵌入到参数列表中。

因为上述代码只有一行,在这种情况下,可以进一步简化:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
new TestLambda ().GeneralMethod (() =>Console.WriteLine ("我是一个Lambda表达式"));

单行Lambda表达式可以简化大括号和冒号结尾符。

一般的,凡是使用到委托传方法的地方,都可以将代码简化为Lambda表达式形式,这就是一种比较好玩的语法糖,初学者接受起来难免会生疏,所以要多写代码,孰能生巧。

本节到此结束...

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DotNet 致知 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Linq快速入门——Lambda表达式的前世今生
Lambda表达式其实并不陌生,他的前生就是匿名函数,所以要谈Lambda表达式,就不得不谈匿名函数,要谈匿名函数,那又要不得不谈委托。 何为委托 匿名方法 Lambda表达式 扩展方法 泛型委托 A Simple Lambda Demo Lambda表达式树 何为委托 委托非常好理解,类似于C++里面的函数指针(指向了一个方法),并且委托约束了待指向方法的签名(由返回类型和参数组成)。 using System; using System.Collections.Generic; using Syst
用户1161731
2018/01/11
1.4K0
Linq快速入门——Lambda表达式的前世今生
C# Lambda表达式详解,及Lambda表达式树的创建
每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默。我眼中的程序员大多都不爱说话,默默承受着编程的巨大压力,除了技术上的交流外,他们不愿意也不擅长和别人交流,更不乐意任何人走进他们的内心!
zls365
2021/02/26
9740
C# 学习笔记(12)—— Lambda 表达式
Lambda 表达式是 C# 3.0 中最重要的特性之一,另外一个同样重要的特性是 Linq
Karl Du
2023/10/20
3100
委托学习过程及委托、Lambda表达式和匿名方法的关系总结及事件总结
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。
wfaceboss
2019/04/08
6610
C# lambda表达式
学了N多久的委托,终于告一段落,现在可以开始lambda的学习之旅了,但是在说lambda之前必须先说下C#中的匿名方法. 1、匿名方法 下面是一个字符串拼接的程序,用到了委托,代码如下: class Program { static void Main(string[] args) { string mid = ",middle part,"; var d1 = new GetString(Test);
郑小超.
2018/01/26
6720
背后的故事之 - 快乐的Lambda表达式(一)
  自从Lambda随.NET Framework3.5出现在.NET开发者眼前以来,它已经给我们带来了太多的欣喜。它优雅,对开发者更友好,能提高开发效率,天啊!它还有可能降低发生一些潜在错误的可能。LINQ包括ASP.NET MVC中的很多功能都是用Lambda实现的。我只能说自从用了Lambda,我腰也不酸了,腿也不疼了,手指也不抽筋了,就连写代码bug都少了。小伙伴们,你们今天用Lambda了么?但是你真的了解它么?今天我们就来好好的认识一下吧。   本文会介绍到一些Lambda的基础知识,然后会有一
用户1153966
2018/03/14
6700
背后的故事之 - 快乐的Lambda表达式(一)
C#一分钟浅谈:Lambda 表达式和匿名方法
在C#编程中,Lambda表达式和匿名方法都是定义没有名称的方法的方式,它们使得代码更加简洁和易于维护。本文将从基础概念入手,逐步深入探讨这两者的区别与联系,并通过具体示例帮助理解。
Jimaks
2024/09/09
3350
【愚公系列】2023年02月 .NET/C#知识点-委托、匿名方法、Lambda、泛型委托、表达式树的进化史
在 .NET 中,委托是一种类型,它可以持有对一个或多个方法的引用,并允许将这些方法作为参数传递给其他方法。.NET 中的委托类似于 C 和 C++ 中的函数指针,但具有更高的类型安全性和其他功能。
愚公搬代码
2023/02/16
7960
C#学习笔记 lambda表达式
在使用委托的时候,除了将一个已存在的方法赋给一个委托之外,还可以使用匿名方法的方式。使用匿名方法的时候,需要一个delegate关键字,并且方法的参数列表要和委托定义的完全一样。
乐百川
2022/05/05
4160
.NET面试题系列[12] - C# 3.0 LINQ的准备工作
"为了使LINQ能够正常工作,代码必须简化到它要求的程度。" - Jon Skeet
s055523
2018/09/14
1.3K0
拉姆达表达式/Lambda表达式/lambda expression 使用整理
Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。 Lambda表达式可以表示闭包,最早出现C#3.0,随着时间推移新版本JavaScript、Java8,Pathton等语言也都开始支持。
全栈程序员站长
2022/11/17
9430
.NET中那些所谓的新语法之三:系统预定义委托与Lambda表达式
开篇:在上一篇中,我们了解了匿名类、匿名方法与扩展方法等所谓的新语法,这一篇我们继续征程,看看系统预定义委托(Action/Func/Predicate)和超爱的Lambda表达式。为了方便码农们,.Net基类库针对实际开发中最常用的情形提供了几个预定义好的委托,这些委托可以直接使用,无需再重头定义一个自己的委托类型。预定义委托在.Net基类库中使用的比较广泛,比如在Lambda表达式和并行计算中都大量地使用,需要我们予以关注起来!
Edison Zhou
2018/08/20
9820
.NET中那些所谓的新语法之三:系统预定义委托与Lambda表达式
C#中的Lambda表达式
在看C#中的Lambda表达式之前,先来看一个概念:匿名方法。学过Java的亲们,可能对这个概念比较了解。Java JDK8中也引入了Lambda表达式。
卡尔曼和玻尔兹曼谁曼
2019/01/25
8870
C#中的Lambda表达式
C#3.0新增功能08 Lambda 表达式
Lambda 表达式是作为对象处理的代码块(表达式或语句块)。 它可作为参数传递给方法,也可通过方法调用返回。 Lambda 表达式广泛用于:
张传宁IT讲堂
2019/09/17
1.8K0
lambda表达式-编译测试
我不会IL,也不想学IL,所以为了测试Lambda表达式编译的原理,只能使用调试进行试验来认识: 第一种情况,当Lambda表达式没有用到函数外的变量时: class MyClass2 { public Action TestLambda() { Action action = () => { Console.WriteLine(DateTime.Now); }; return action; }
用户1172223
2018/01/29
6970
lambda表达式-编译测试
C#基础篇 - 理解委托和事件
委托类似于C++中的函数指针(一个指向内存位置的指针)。委托是C#中类型安全的,可以订阅一个或多个具有相同签名方法的函数指针。简单理解,委托是一种可以把函数当做参数传递的类型。很多情况下,某个函数需要动态地去调用某一类函数,这时候我们就在参数列表放一个委托当做函数的占位符。在某些场景下,使用委托来调用方法能达到减少代码量,实现某种功能的用途。
Esofar
2018/09/05
5680
C#基础篇 - 理解委托和事件
《C#图解教程》读书笔记之五:委托和事件
  (1)本质:持有一个或多个方法的对象;委托和典型的对象不同,执行委托实际上是执行它所“持有”的方法。如果从C++的角度来理解委托,可以将其理解为一个类型安全的、面向对象的函数指针。
Edison Zhou
2018/08/20
6000
《C#图解教程》读书笔记之五:委托和事件
C# 语言中Lambda(拉姆达) 表达式介绍
Lambda 表达式是一种可用于创建 委托 或 表达式目录树 类型的 匿名函数 。 通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数。 Lambda 表达式对于编写
程序你好
2018/07/20
8.6K0
代码重构之没有理由拒绝Lambda表达式
代码重构之没有理由拒绝Lambda表达式 Lambda表示是在C# 3.0推出的新特性,而匿名方法是C# 2.0推出的新特性,这一切都是为了让代码变得更简洁,更容易理解。 最近开始做一些Silverlight的应用项目,发现在Silverlight和后台代码交互时大量使用的是异步回调的方式;而异步处理特别是需要有返回结果,比如调用webService返回数据,哪怕是一个普通的Event事件处理,通常情况下都要写不少代码,定义委托类型,回调方法等。 如果熟练的开发人员对.net framework每个版
阿新
2018/04/12
7370
CSharp委托与匿名函数
面对事件处理,我们通常会通过定义某一个通用接口,在该接口中定义方法,然后在框架代码中,调用实现该接口的类实例的方法来实现函数的回调。可能这样来说有些抽象,那我们提供一个具体的情形来实现这一情形。
w4ngzhen
2023/10/16
2700
推荐阅读
相关推荐
Linq快速入门——Lambda表达式的前世今生
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验