初步认识C#中的Lambda表达式和匿名方法
Lambda表达式
Lambda表达式是C# 3.0版本引入的新特性,可以看作是一个匿名函数,它可以传递到某些方法中,例如集合(List, Array)的Where() 方法。Lambda表达式允许您以更简洁的语法编写方法,从而使代码更简单易读。
Lambda表达式的语法格式为:(parameters) => expression或者(parameters) => { statements }
比如下面这个Lambda表达式表示将两个整数相加:
int result = ((a, b) => a + b)(1, 2); // result的值是3
这个Lambda表达式的parameters是"a, b",表示传入两个整数参数,"a + b"表示函数体表达式。Lambda表达式可以有多个参数,也可以没有参数。Lambda表达式表达的是指向一个方法的引用,因此它可以被赋值给委托类型或Lambda表达式本身不存在类型。
Lambda表达式的好处在于它可以减少代码量,使代码更加简洁易懂和可读性。
匿名方法
在Lambda表达式出现之前,匿名方法是C#中引入的实现闭包的机制。与Lambda表达式类似,匿名方法也是一种匿名函数。
匿名方法的语法格式为:delegate (input parameters) { statements; }
下面这个例子使用匿名方法进行委托事件的处理:
Button button1 = new Button();
button1.Click += delegate (object sender, EventArgs e)
{
// 事件处理方法
};
与Lambda表达式不同,匿名方法要显式地声明委托类型。
匿名方法的优点是可以在交互式应用程序中使用,例如在控制台应用程序中。
示例
Lambda表达式示例
以下示例使用Lambda表达式和LINQ查询出一组数字的平方值,并将结果输出到控制台:
int[] numbers = { 2, 3, 4, 5, 6 };
var result = numbers.Select(x => x * x);
foreach (var item in result)
{
Console.WriteLine(item);
}
输出
4
9
16
25
36
匿名方法示例
以下示例通过使用匿名方法,将委托从主方法传递到另一个方法中:
delegate void del(string message);
static void Main(string[] args)
{
del messageTarget = delegate (string message)
{
Console.WriteLine(message);
};
Method(messageTarget);
}
static void Method(del handler)
{
handler("Hello World");
}
输出
Hello World
在这个示例中,我们创建了一个委托类型del。然后在Main方法中,我们创建了一个匿名方法作为处理事件的委托。最后,我们传递了委托给Method方法,Method方法调用了委托,从而输出了"Hello World"。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:初步认识C#中的Lambda表达式和匿名方法 - Python技术站