c# lamda表达式
时间: 2023-10-20 11:08:53 浏览: 224
C# lambda表达式是一种匿名函数的简化形式,它可以用于创建委托对象或表达式树。lambda表达式可以在需要委托类型或表达式树的任何代码中使用,用于传递代码块或表达式。例如,在使用LINQ查询时,可以使用lambda表达式来指定查询的条件或操作。
下面是一个使用lambda表达式的示例,展示了如何在LINQ中使用它:
```csharp
var numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(x => x % 2 == 0);
foreach (var number in evenNumbers)
{
Console.WriteLine(number);
}
```
在这个示例中,`x => x % 2 == 0`是一个lambda表达式,它用于在`Where`方法中指定筛选条件,只选择偶数。
相关问题
c#lamda表达式
### C# Lambda 表达式简介
Lambda 表达式是一种简洁的方式定义内联函数,通常用于创建委托或表达式树类型。这种表达式能够显著减少代码量并提高可读性[^3]。
#### 定义与基本结构
Lambda 表达式的典型形式由两部分组成:左侧为输入参数列表(如果存在),右侧则是执行逻辑,二者通过 `=>` 符号分隔开。对于无参的情况,则只需一对空括号即可表示[^4]。
```csharp
// 无参数的简单例子
Action simpleAction = () => Console.WriteLine("这是最简单的Lambda");
simpleAction();
```
当有单个参数时,甚至可以省略掉圆括号:
```csharp
Func<int, int> square = x => x * x;
Console.WriteLine(square(5)); // 输出25
```
多于一个参数的情形下则仍需保留括号,并且多个参数间要用逗号分开:
```csharp
Func<int, int, int> addNumbers = (num1, num2) => num1 + num2;
Console.WriteLine(addNumbers(7, 8)); // 输出15
```
#### 集合操作中的应用
除了上述的基础用法外,在处理集合数据时,Lambda 表达式也极为有用。许多LINQ查询方法如 `Where`, `Select`, `OrderBy`, 和 `GroupBy` 等都可以接收Lambda作为筛选条件或是转换规则[^2]。
下面展示如何利用 `Where` 方法配合Lambda来过滤数组内的偶数项:
```csharp
int[] numbers = new int[] { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(n => n % 2 == 0);
foreach(var number in evenNumbers){
Console.Write($"{number} ");
}
// 输出 "2 4"
```
同样地,也可以借助 `Select` 来实现投影变换——即改变原有对象的形式而不影响其本身:
```csharp
string[] names = {"Alice", "Bob", "Charlie"};
var nameLengths = names.Select(name => $"Name '{name}' has length of {name.Length}");
foreach(var info in nameLengths){
Console.WriteLine(info);
}
/* 输出如下:
Name 'Alice' has length of 5
Name 'Bob' has length of 3
Name 'Charlie' has length of 7 */
```
C# Lamda表达式
C# Lambda表达式是一种匿名函数,它可以快速创建简单的委托或表达式树。Lambda表达式通常用于替代匿名方法。Lambda表达式通常以箭头“=>”分隔左侧的输入和右侧的输出。Lambda表达式的语法如下:(parameter_list) => expression。其中,parameter_list是一个逗号分隔的参数列表,而expression是一个表达式,它定义了Lambda表达式的返回值。Lambda表达式可以用于各种场景,例如筛选、排序、转换等。
以下是一个Lambda表达式的例子,用于对一个整型数组进行筛选:
```csharp
int[] numbers = { 2, 3, 4, 5, 6 };
var evenNumbers = numbers.Where(x => x % 2 == 0);
foreach (var number in evenNumbers)
{
Console.WriteLine(number);
}
```
上述代码中,Lambda表达式x => x % 2 == 0定义了一个筛选条件,用于筛选出数组中的偶数。其中,x是参数,x % 2 == 0是表达式,表示当x除以2的余数为0时返回true,否则返回false。最终,筛选出的偶数会被存储在变量evenNumbers中,并通过foreach循环输出。
阅读全文
相关推荐














