Lambda表达式最初是在.NET 3.5中引入的,同时提供了语言集成查询(LINQ)。 Lambda表达式就像匿名方法,但具有更大的灵活性。 使用lambda表达式时,无需指定输入的类型。 因此,lambda表达式提供了一种更简短的表示匿名方法的方法。
在本文中,我们将研究如何在C#中使用lambda表达式。 若要使用本文提供的代码示例,您应该在系统中安装Visual Studio 2019。 如果您还没有副本,则可以在此处下载Visual Studio 2019 。
首先,让我们在Visual Studio中创建一个.NET Core控制台应用程序项目。 假设系统中已安装Visual Studio 2019,请按照以下概述的步骤在Visual Studio中创建新的.NET Core控制台应用程序项目。
执行以下步骤应会在Visual Studio 2019中产生一个新的.NET Core控制台应用程序项目。在本文的后续部分中,我们将使用该项目来处理C#lambda表达式。
本质上,lambda表达式是没有声明的方法。 换句话说,lambda表达式是一种没有访问说明符或名称的方法。 Lambda表达式可分为两部分-左部分和右部分。 左部分用于输入,右部分用于编写表达式。
这是在C#中使用lambda表达式的语法。
(Input parameters) => Expression or statement block
您可以使用两种类型的Lambda表达式,即表达式Lambda和语句Lambda。 表达式lambda由左侧的输入和右侧的表达式组成,如下所示。
input => expression;
语句lambda由左侧的输入和右侧的一组语句组成,如下所示。
input => { statements };
编写lambda表达式很简单-您只需要从匿名方法中删除委托关键字和参数类型即可。 请考虑以下使用委托关键字以及参数类型的匿名方法。
delegate(Author a) { return a.IsActive && a.NoOfBooksAuthored > 10; }
上面的语句可以转换为lambda表达式,如下面的代码片段所示。
(a) => { a.IsActive && a.NoOfBooksAuthored > 10; }
在上面的语句中, a
是参数,而=>
是lambda运算符。 以下语句是表达式。
a.IsActive && a.NoOfBooksAuthored > 10;
这是lambda表达式的另一个示例,该示例在控制台窗口中显示1到9之间的奇数。
List integers = new List { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
foreach(int num in integers.Where(n => n % 2 == 1).ToList())
{
Console.WriteLine(num);
}
Lambda表达式可以是无参数的,也可以具有一个或多个参数。 以下代码段说明了没有任何参数的lambda表达式。
() => Console.WriteLine("This is a lambda expression without any parameter");
Lambda表达式也可以具有一个或多个参数。 以下代码段说明了如何将一个参数传递给lambda表达式。
(a, numberOfBooksAuthored) => a.NoOfBooksAuthored >= numberOfBooksAuthored;
您还可以在lambda表达式中指定参数的类型,如下面的代码段所示。
(a, int numberOfBooksAuthored) => a.NoOfBooksAuthored >= numberOfBooksAuthored;
您甚至可以使用花括号在lambda表达式中指定多个语句。 在下面的代码片段中显示了这一点。
(a, 10) =>
{
Console.WriteLine("This is an example of a lambda expression
with multiple statements");
return a.NoOfBooksAuthored >= 10;
}
语句lambda使用与表达式lambdas相同的语法。 不同之处在于,lambda语句具有一个包含一个或多个语句的代码块,而不是在运算符的右侧具有表达式。
以下代码段说明了如何利用语句lambda在控制台窗口中显示1到9之间的偶数。
int[] integers = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
foreach (int i in integers.Where(x =>
{
if (x % 2 == 0)
return true;
return false;
}
))
Console.WriteLine(i);
Lambda表达式是.NET和.NET Core的一项重要功能,它们提供了一种表示匿名方法的较短方法。 Lambda表达式可以具有零个参数或一个或多个。 您甚至可以将lambda表达式分配给Func,Action或Predicate委托。 在以后的文章中,我们将探讨lambda表达式的这些和其他功能。 我们还将探讨如何使用lambda表达式和LINQ以及异步lambda。
From: https://www.infoworld.com/article/3516071/how-to-use-lambda-expressions-in-csharp.html