Lambda 表达式学习
C# 中的 Lambda 表达式:简洁与灵活的函数表示
在C#编程中,Lambda表达式
是一种强大的特性,它允许我们以简洁的语法定义匿名函数。Lambda表达式
广泛应用于委托、LINQ查询
以及需要传递方法作为参数
的场景。本文将详细介绍Lambda表达式
的基本语法、使用场景以及实际示例,帮助你更好地理解和使用这一特性。
1、什么是Lambda表达式?
Lambda表达式
是一种匿名函数,它可以包含表达式或语句块,并且可以作为参数传递给方法或赋值给委托。Lambda表达式
的核心优势在于其简洁性和灵活性,尤其是在需要传递简单逻辑时,它可以显著减少代码量。
1.1Lambda表达式的基本语法
Lambda表达式
的语法为:(参数列表) => 表达式或语句块
参数列表:可以是零个或多个参数,参数类型可以显式声明或由编译器推断。
=>:Lambda运算符,读作“goes to”。
表达式或语句块:如果只有一行代码,可以直接写表达式;如果有多行代码,需要用{}包裹。
2、Lambda表达式的使用场景
2.1. 委托与Lambda表达式
Lambda表达式
可以用于简化委托的定义和调用。例如:
public delegate int MathOperation(int a, int b);
MathOperation multiply = (a, b) => a * b;
int product = multiply(4, 5); // product = 20
Console.WriteLine(product);
在这个例子中,我们使用Lambda表达式
定义了一个乘法操作,并将其赋值给MathOperation委托
。
2.2 LINQ查询与Lambda表达式
Lambda表达式
是LINQ查询
的核心,它使得数据操作更加直观和高效。例如:
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(n => n % 2 == 0).ToList();
Console.WriteLine(string.Join(", ", evenNumbers)); // 输出: 2, 4
在这个例子中,我们使用Lambda表达式
筛选出列表中的偶数。
2.3. 事件处理与Lambda表达式
Lambda表达式
可以用于简化事件处理程序的编写。例如:
button.Click += (sender, e) => Console.WriteLine("Button clicked!");
在这个例子中,我们使用Lambda表达式
定义了一个按钮点击事件的处理程序。
3.Lambda表达式的实际示例
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
// 定义一个委托
public delegate int MathOperation(int a, int b);
static void Main(string[] args)
{
// 无参数的Lambda表达式
Action sayHello = () => Console.WriteLine("Hello, World!");
sayHello();
// 带一个参数的Lambda表达式
Action<string> greet = name => Console.WriteLine($"Hello, {name}!");
greet("Alice");
// 带多个参数的Lambda表达式
Func<int, int, int> add = (a, b) => a + b;
int result = add(3, 5);
Console.WriteLine($"3 + 5 = {result}");
// 带语句块的Lambda表达式
Action<int, int> printSum = (a, b) =>
{
int sum = a + b;
Console.WriteLine($"Sum of {a} and {b} is {sum}");
};
printSum(10, 20);
// 在LINQ中使用Lambda表达式
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(n => n % 2 == 0).ToList();
Console.WriteLine("Even numbers: " + string.Join(", ", evenNumbers));
// 在委托中使用Lambda表达式
MathOperation multiply = (a, b) => a * b;
int product = multiply(4, 5);
Console.WriteLine($"4 * 5 = {product}");
}
}