C#-Lambda 表达式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言

C# 中的lambda 表达式

一、Lambda

Lambda表达式是一个匿名函数,基于数学中的λ演算得名。它是一个没有函数名的函数,可以直接表示闭包。Lambda表达式可以表示在数学传统意义上不同的闭包,因为它们具有定义域内外的依赖关系。在计算机科学中,Lambda表达式用于定义简单的函数操作,尤其在需要传递函数作为参数或返回函数作为结果的情况下。Lambda表达式在许多编程语言中都有支持,如C#、Java、JavaScript等。使用Lambda表达式可以使代码更加简洁和可读性更强,同时提高代码的复用性和可维护性

二 Lambda的来源与应用

Lambda表达式的起源

Lambda表达式这一概念源于数学中的λ演算,特别是在函数式编程语言如LISP和Haskell中得到了广泛应用。λ演算提供了一种形式化的方式来描述函数和计算,它允许我们使用简单的规则来组合函数,而无需显式定义它们。

在计算机科学中,lambda表达式被用来表示这些匿名函数。这些函数可以接受输入(参数)并返回一个结果,而无需具有特定的名称。这使得它们非常适合于简洁地表示简单的函数操作,尤其是在需要将函数作为参数传递给其他函数或作为返回值时。

Lambda表达式在各语言中的应用和重要性

  • LISP (1958): 作为最早的函数式编程语言之一,LISP 包含了 lambda
    表达式的概念。它允许程序员定义匿名函数,这些函数可以在运行时动态创建和调用。
  • Scheme (1975): 作为 LISP 的一个方言,Scheme 也继承了 lambda 表达式的概念。它使用 lambda
    关键字来定义匿名函数,并支持高阶函数(即可以接受或返回函数的函数)。
  • Haskell (1990s): Haskell 是现代函数式编程语言的代表,其核心语言中包含 lambda
    表达式。它允许程序员简洁地表示复杂的函数操作,并且支持高阶函数和闭包。
  • C# (2007): C# 3.0 引入了 lambda 表达式,使其成为一种强大的工具,用于编写简洁、可读性强的代码。通过使用
    lambda 表达式,程序员可以更容易地创建委托和表达式树类型。
  • Java (2014): Java 8 引入了 lambda 表达式,这是该语言首次支持函数式编程。Lambda 表达式使 Java
    能够以更简洁、更灵活的方式处理集合和异步编程。
  • JavaScript (2015): ECMAScript 6(也称为 ES6)引入了 lambda 表达式,使得 JavaScript
    开发人员可以使用类似于其他语言的简洁语法来表示函数。这提高了代码的可读性和可维护性。

具体例子:

1.LISP (使用 Scheme 方言):
scheme 复制代码
(define (add-numbers x y)  
  ((lambda (a b) (+ a b)) x y))

这个例子定义了一个名为 add-numbers 的函数,该函数接受两个参数 x 和 y,并返回它们的和。lambda 关键字用于定义一个匿名函数,该函数接受两个参数 a 和 b,并返回它们的和。

2. Haskell:
haskell 复制代码
-- 使用 lambda 表达式定义一个简单的加法函数  
add x y = (\a b -> a + b) x y

在 Haskell 中,lambda 表达式允许我们简洁地定义复杂的函数操作。这里我们定义了一个简单的加法函数,该函数使用 lambda 表达式来组合参数 x 和 y。

3. C#:
csharp 复制代码
// 使用 lambda 表达式过滤出列表中的偶数  
var evenNumbers = numbers.Where(n => n % 2 == 0);

在 C# 中,lambda 表达式用于简化集合操作和其他需要传递匿名函数的场景。这里我们使用 Where 方法来过滤出一个整数列表中的偶数,通过 n => n % 2 == 0 这个 lambda 表达式来实现。

4. Java:
java 复制代码
// 使用 lambda 表达式进行排序(Java 8 及以后版本)  
List<Integer> numbers = Arrays.asList(1, 3, 2, 5, 4);  
numbers.sort(Integer::compare); // 使用自然排序对列表进行排序

在 Java 中,lambda 表达式可以简化集合操作和并发编程等场景。这里我们使用 sort 方法对一个整数列表进行排序,通过 Integer::compare 这个 lambda 表达式来实现。

5. JavaScript:
javascript 复制代码
// 使用 lambda 表达式进行数组过滤(ES6 及以后版本)  
const numbers = [1, 3, 2, 5, 4];  
const evenNumbers = numbers.filter(n => n % 2 === 0); // 只保留偶数

在 JavaScript 中,lambda 表达式用于简化数组操作和其他需要传递匿名函数的场景。这里我们使用 filter 方法来过滤出一个数组中的偶数,通过 n => n % 2 === 0 这个 lambda 表达式来实现。


总结

以上就是今天的内容了,简单介绍下Lambda表达式。

相关推荐
Zoey的笔记本14 小时前
敏捷与稳定并行:Scrum看板+BPM工具选型指南
大数据·前端·数据库·python·低代码
Coder_Boy_15 小时前
基于SpringAI的在线考试系统-企业级软件研发工程应用规范实现细节
大数据·开发语言·人工智能·spring boot
lly20240615 小时前
SQL SELECT 语句详解
开发语言
superman超哥15 小时前
Rust 异步时间管理核心:Tokio 定时器实现机制深度剖析
开发语言·rust·编程语言·rust异步时间管理核心·tokio定时器实现机制·tokio定时器
朔北之忘 Clancy15 小时前
2025 年 9 月青少年软编等考 C 语言一级真题解析
c语言·开发语言·c++·学习·数学·青少年编程·题解
玛丽莲茼蒿15 小时前
javaSE 集合框架(五)——java 8新品Stream类
java·开发语言
wjs202415 小时前
SQLite Glob 子句详解
开发语言
youyicc15 小时前
Qt连接Pg数据库
开发语言·数据库·qt
开开心心就好15 小时前
图片格式转换工具,右键菜单一键转换简化
linux·运维·服务器·python·django·pdf·1024程序员节
量子炒饭大师15 小时前
【C++入门】Cyber底码作用域的隔离协议——【C++命名空间】(using namespace std的原理)
开发语言·c++·dubbo