C# 中的“=”语法是什么意思

作者:编程家 分类: c++ 时间:2025-04-12

C# 中的“=>”语法是一种称为“Lambda 表达式”的特殊语法结构,它提供了一种简洁和灵活的方式来创建委托或函数式接口的实例。Lambda 表达式可以看作是一种匿名函数,它可以被赋值给委托类型或函数式接口变量,并用于简化代码的编写。

Lambda 表达式的基本语法形式为:`(input parameters) => expression`。其中,输入参数可以是一个或多个参数,用逗号分隔,可以指定参数的类型也可以不指定;箭头 `=>` 的左边是输入参数部分,右边是表达式部分。表达式可以是一个单独的语句或一个代码块,它们可以是任意合法的 C# 表达式。

使用 Lambda 表达式可以简化代码,提高可读性和可维护性。它常用于 LINQ 查询、事件处理、委托赋值等场景中。

下面以几个示例来说明 Lambda 表达式的使用。

示例 1:使用 Lambda 表达式进行简单的计算

在这个例子中,我们使用 Lambda 表达式来定义一个简单的加法函数,并调用它进行计算。

csharp

Func addFunc = (a, b) => a + b;

int result = addFunc(3, 5); // 调用 Lambda 表达式进行计算

Console.WriteLine(result); // 输出结果:8

在这个示例中,我们定义了一个 Func 委托类型的变量 `addFunc`,该委托接受两个 int 类型的参数并返回一个 int 类型的结果。Lambda 表达式 `(a, b) => a + b` 表示将输入的两个参数相加,并返回结果。

示例 2:使用 Lambda 表达式进行过滤

在这个例子中,我们使用 Lambda 表达式来过滤一个整数列表中的偶数。

csharp

List numbers = new List { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

List evenNumbers = numbers.Where(n => n % 2 == 0).ToList();

foreach (int number in evenNumbers)

{

Console.WriteLine(number);

}

在这个示例中,我们使用了 LINQ 的 `Where` 方法和 Lambda 表达式 `(n => n % 2 == 0)`。该表达式表示对整数列表中的每个元素进行判断,如果元素能被 2 整除,则保留该元素。最后,我们将过滤后的结果转换为列表,并使用 foreach 循环输出偶数。

示例 3:使用 Lambda 表达式进行事件处理

在这个例子中,我们使用 Lambda 表达式来处理按钮点击事件。

csharp

Button button = new Button();

button.Click += (sender, e) => Console.WriteLine("Button clicked!");

在这个示例中,我们使用了 Lambda 表达式 `(sender, e) => Console.WriteLine("Button clicked!")` 来作为按钮点击事件的处理方法。当按钮被点击时,Lambda 表达式中的代码将被执行,输出一条信息。

示例 4:使用 Lambda 表达式进行排序

在这个例子中,我们使用 Lambda 表达式来对一个字符串列表进行排序。

csharp

List names = new List { "Alice", "Bob", "Charlie", "Dave", "Eve" };

names.Sort((a, b) => a.CompareTo(b));

foreach (string name in names)

{

Console.WriteLine(name);

}

在这个示例中,我们使用了 List 的 `Sort` 方法和 Lambda 表达式 `(a, b) => a.CompareTo(b)`。该表达式表示对字符串进行比较,并根据字母顺序进行排序。最后,我们使用 foreach 循环输出排序后的结果。

通过以上示例,我们可以看到 Lambda 表达式的灵活和简洁之处。它能够大大简化代码的编写,提高代码的可读性和可维护性。在 C# 中,Lambda 表达式广泛应用于各种场景,如 LINQ 查询、事件处理、委托赋值等,为开发者带来了更好的编程体验。