C# 编程指南:匿名方法和Lambda表达式

在C#中,匿名方法和Lambda表达式是两种用于创建简洁、内联的函数的技术。它们提供了一种方便的方式来定义和传递函数作为参数

部分
1
匿名方法
匿名方法是一种没有显式名称的方法,它可以在需要时内联定义和使用。
匿名方法通常与委托一起使用,作为委托的实例化参数或赋值给委托变量。
// 使用匿名方法作为委托参数
void ProcessData(int number, Action<int> action)
{
    action(number);
}

// 使用匿名方法调用
ProcessData(5, delegate(int n)
{
    Console.WriteLine("Number: " + n);
});

在以上示例中,匿名方法被赋值给 Action<int> 委托类型的参数,并在调用 ProcessData 方法时传递了一个匿名方法作为参数。匿名方法内联定义了一个只接受整数参数并输出到控制台的操作。

部分
2
Lambda表达式
Lambda表达式是一种简洁的语法构造,用于创建内联的匿名函数。
Lambda表达式通常与函数式接口(Functional Interface)一起使用,如委托、LINQ查询、任务等。
// 使用Lambda表达式作为委托参数
void ProcessData(int number, Action<int> action)
{
    action(number);
}

// 使用Lambda表达式调用
ProcessData(5, n =>
{
    Console.WriteLine("Number: " + n);
});

在以上示例中,Lambda表达式 n => { Console.WriteLine("Number: " + n); } 被传递给 Action<int> 委托类型的参数,并作为参数传递给 ProcessData 方法。Lambda表达式内联定义了一个只接受整数参数并输出到控制台的操作。 Lambda表达式还支持更多的语法构造,例如多个参数、表达式体、条件运算符等。以下是一些示例代码:

// Lambda表达式示例

// Lambda表达式赋值给委托变量
Func<int, int> square = x => x * x;
Console.WriteLine(square(5)); // 输出: 25

// Lambda表达式作为LINQ查询条件
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(n => n % 2 == 0);
foreach (var number in evenNumbers)
{
    Console.WriteLine(number); // 输出: 2, 4
}

// Lambda表达式作为任务的执行体
Task.Run(() => Console.WriteLine("Hello, World!"));

// Lambda表达式作为事件处理方法
button.Click += (sender, e) => Console.WriteLine("Button clicked");

以上示例展示了Lambda表达式在不同场景下的应用。Lambda表达式的简洁语法和灵活性使得代码更加清晰、易读和易于编写。通过合理运用匿名方法和Lambda表达式,可以提高代码的可读性和可维护性,并简化函数式编程的实现。

    目录

  • 1.
    匿名方法
  • 2.
    Lambda表达式