首页 > 代码库 > C#Lambda表达式的理解:谓词方法 匿名方法 使用Lambda

C#Lambda表达式的理解:谓词方法 匿名方法 使用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(); 

        }
    }
}