推荐答案
// www.javascriptcn.com code example
// 匿名方法示例
Action<string> printMessage = delegate(string message)
{
Console.WriteLine(message);
};
printMessage("Hello, Anonymous Method!");
// Lambda 表达式示例
Action<string> printMessageLambda = (message) => Console.WriteLine(message);
printMessageLambda("Hello, Lambda Expression!");本题详细解读
匿名方法
匿名方法是在 C# 2.0 中引入的,允许你在不定义命名方法的情况下直接定义一个方法体。匿名方法通常用于委托(Delegate)中,特别是在需要传递一个简单的方法时。
语法
delegate (参数列表)
{
// 方法体
};示例
Action<string> printMessage = delegate(string message)
{
Console.WriteLine(message);
};在这个示例中,printMessage 是一个 Action<string> 类型的委托,它接受一个 string 类型的参数。匿名方法通过 delegate 关键字定义,并在方法体中打印传入的消息。
Lambda 表达式
Lambda 表达式是在 C# 3.0 中引入的,它提供了一种更简洁的方式来定义匿名方法。Lambda 表达式通常用于 LINQ 查询、事件处理程序以及其他需要传递简单方法的场景。
语法
(参数列表) => 表达式或语句块
示例
Action<string> printMessageLambda = (message) => Console.WriteLine(message);
在这个示例中,printMessageLambda 是一个 Action<string> 类型的委托,它接受一个 string 类型的参数。Lambda 表达式通过 => 符号定义,并在表达式体中打印传入的消息。
匿名方法与 Lambda 表达式的区别
- 语法简洁性:Lambda 表达式通常比匿名方法更简洁,尤其是在方法体较短的情况下。
- 类型推断:Lambda 表达式支持类型推断,而匿名方法需要显式指定参数类型。
- 适用场景:Lambda 表达式更常用于 LINQ 查询和函数式编程,而匿名方法在早期版本的 C# 中更为常见。
总结
匿名方法和 Lambda 表达式都是 C# 中用于定义匿名函数的方式,Lambda 表达式在语法上更为简洁,并且在现代 C# 编程中更为常用。