首页 > 代码库 > C#Lambda表达式的理解:谓词方法 匿名方法 使用Lambda
C#Lambda表达式的理解:谓词方法 匿名方法 使用Lambda
"Lambda表达式"是一个匿名函数,是一种高效的类似于函数式编程的表达式,Lambda简化了开发中需要编写的代码量。它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型,支持带有可绑定到委托或表达式树的输入参数的内联表达式。所有Lambda表达式都使用Lambda运算符=>,该运算符读作"goes to"。Lambda运算符的左边是输入参数(如果有),右边是表达式或语句块。
下面三个方法会帮你会容易理解到Lambda表达式的好处,这也是我在别的文章看到的,现在分享给你们,代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LamdbaDemo
{
class Program
{
private static void FindListDelegate()
{
//先创建一个泛型List类
List<string> list = new List<string>();
list.AddRange(new String[] { "java课程", "J2EE课程", "ado.net课程", "数据结构课程" });
Predicate<string> findPredicate = new Predicate<string>(IsBookCategory);
List<string> bookCategory = list.FindAll(findPredicate);
foreach (string str in bookCategory)
{
Console.WriteLine("{0}\t", str);
}
}
//谓词方法,这个方法将被传递给FindAll方法进行书籍分类判断
private static bool IsBookCategory(string str)
{
return str.EndsWith("课程") ? true : false;
}
//使用匿名方法来进行搜索过程
private static void FindListAnonymousMethod()
{
//先创建一个泛型的List类
List<string> list=new List<string>();
list.AddRange(new String[] { "java课程", "J2EE课程", "ado.net课程", "数据结构" });
//在这里,使用匿名方法直接为委托创建一个代码块,而不用去创建单独的方法
List<string> bookCategory = list.FindAll(delegate(string str)
{
return str.EndsWith("课程") ? true : false;
}
);
foreach (string str in bookCategory)
{
Console.WriteLine("{0}\t",str);
}
}
//使用Lambda来实现搜索过程
private static void FindListLambdaExpression()
{
//先创建一个泛型List类
List<string> list=new List<string>();
list.AddRange(new String[] { "java课程", "J2EE课程", "ado.net课程", "数据结构" });
//在这里,使用lambda来创建一个委托方法
List<string> bookCategory = list.FindAll((string str) => str.EndsWith("课程"));
foreach (string str in bookCategory)
{
Console.WriteLine("{0}\t", str);
}
}
static void Main(string[] args)
{
Console.WriteLine("传统的委托代码示例:");
FindListDelegate();
Console.Write("\n");
Console.WriteLine("使用匿名方法的示例:");
FindListAnonymousMethod();
Console.Write("\n");
Console.WriteLine("使用Lambda的示例:");
FindListLambdaExpression();
}
}
}