如何在C#中使用Lambda表达式

Lambda表达式最初是在.NET 3.5中引入的,同时提供了语言集成查询(LINQ)。 Lambda表达式就像匿名方法,但具有更大的灵活性。 使用lambda表达式时,无需指定输入的类型。 因此,lambda表达式提供了一种更简短的表示匿名方法的方法。

在本文中,我们将研究如何在C#中使用lambda表达式。 若要使用本文提供的代码示例,您应该在系统中安装Visual Studio 2019。 如果您还没有副本,则可以在此处下载Visual Studio 2019 。

[ 同样在InfoWorld上:您不知道需要的7个Visual Studio Code扩展 ]

在Visual Studio中创建控制台应用程序项目

首先,让我们在Visual Studio中创建一个.NET Core控制台应用程序项目。 假设系统中已安装Visual Studio 2019,请按照以下概述的步骤在Visual Studio中创建新的.NET Core控制台应用程序项目。

  1. 启动Visual Studio IDE。
  2. 点击“创建新项目”。
  3. 在“创建新项目”窗口中,从显示的模板列表中选择“控制台应用程序(.NET Core)”。
  4. 点击下一步。
  5. 在接下来显示的“配置新项目”窗口中,指定新项目的名称和位置。
  6. 单击创建。

执行以下步骤应会在Visual Studio 2019中产生一个新的.NET Core控制台应用程序项目。在本文的后续部分中,我们将使用该项目来处理C#lambda表达式。

Lambda表达的解剖

本质上,lambda表达式是没有声明的方法。 换句话说,lambda表达式是一种没有访问说明符或名称的方法。 Lambda表达式可分为两部分-左部分和右部分。 左部分用于输入,右部分用于编写表达式。

这是在C#中使用lambda表达式的语法。

(Input parameters) => Expression or statement block

您可以使用两种类型的Lambda表达式,即表达式Lambda和语句Lambda。 表达式lambda由左侧的输入和右​​侧的表达式组成,如下所示。

input => expression;

语句lambda由左侧的输入和右​​侧的一组语句组成,如下所示。

input => { statements };

[ 同样在InfoWorld上:如何在ASP.NET Web API中记录请求和响应元数据 ]

C#中的Lambda表达式示例

编写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表达式可以是无参数的,也可以具有一个或多个参数。 以下代码段说明了没有任何参数的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;
}

[ 通过InfoWorld的App Dev Report新闻通讯了解软件开发中的热门话题 ]

C#中的语句lambda

语句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。

如何在C#中执行更多操作:

  • 何时在C#中使用抽象类与接口
  • 如何在C#中使用AutoMapper
  • 如何在C#中使用Lambda表达式
  • 如何在C#中与Action,Func和Predicate委托一起使用
  • 如何在C#中与委托人一起工作
  • 如何在C#中实现一个简单的记录器
  • 如何在C#中使用属性
  • 如何在C#中使用log4net
  • 如何在C#中实现存储库设计模式
  • 如何在C#中使用反射
  • 如何在C#中使用FileSystemWatcher
  • 如何在C#中执行延迟初始化
  • 如何在C#中使用MSMQ
  • 如何在C#中使用扩展方法
  • 如何在C#中使用Lambda表达式
  • 何时在C#中使用volatile关键字
  • 如何在C#中使用yield关键字
  • 如何在C#中实现多态
  • 如何在C#中构建自己的任务计划程序
  • 如何在C#中使用RabbitMQ
  • 如何在C#中使用元组
  • 探索C#中的虚拟和抽象方法

From: https://www.infoworld.com/article/3516071/how-to-use-lambda-expressions-in-csharp.html

你可能感兴趣的:(如何在C#中使用Lambda表达式)