.net Lambda表达式

   最近看架构师用Lambda表达式很舒服,很简洁,于是抽空看了下,其实很简单的

  目录:

    1.匿名方法

    2.匿名方法与Lambda区别

    3.使用Lambda表达式

  开始学习啦。。。。。。。

   一,匿名方法

         有些方法很少被委托以外的任何程序调用,从生产效率来讲,手工定义一个这样的方法有点繁琐,不是很受欢迎,为了解决这个

     情况。现在可以在事件注册时直接将一个委托与一段代码相关联,这种代码的正式名称为匿名方法。

      示例:

            List<int> list = new List<int>();
            list.AddRange(new int[] { 20, 1, 4, 8, 9, 44 });

             List<int> evenNumber = list.FindAll(delegate(int i)
            {
               return (i % 2) == 0;
            });

   二,匿名方法与Lambda区别

         C#支持内联处理事件,通过直接把一段代码语句赋给事件(使用匿名方法),而不是构建被低层委托调用的独立方法,Lambda表

     达式只是用更简洁的方式来写匿名方法,彻底简化了对委托类型的使用。

  三,使用Lambda表达式

         由于该表达式过于简单,所以直接奉上示例:

Lambda表达式示例
namespace LambdaTest
{
    class Program
    {
        static void Main(string[] args)
        {
            //Lambda表达式测试
            TraditionalDelegateSyntax();

            Console.Read();

        }

        static void TraditionalDelegateSyntax()
        {
            List<int> list = new List<int>();
            list.AddRange(new int[] { 20, 1, 4, 8, 9, 44 });


            //方法一,定义相同类型的委托实例,作为传递参数
            //Predicate<int> anonymousFun = new Predicate<int>(IsEvenNumber);

            //方法二,Predicate<int>委托接受一个同样签名的函数
            //List<int> evenNumber = list.FindAll(IsEvenNumber);

            //方法三,匿名函数的方式 支持C#内联处理事件
            //List<int> evenNumber = list.FindAll(delegate(int i)
            //{
            //    return (i % 2) == 0;
            //});


            //方法四,Lambda表达式 比匿名函数更简洁
            //lamdba表达式的语法 (参数1,参数2,...)=>{处理语句} 如果没有参数表达式则为:()=>{处理语句}
            List<int> evenNumber = list.FindAll(i => (i % 2) == 0);


            //方法2辅助
            //Predicate<int> anonymousFun=IsEvenNumber;
            //List<int> evenNumber = list.FindAll(anonymousFun);

            foreach (var number in evenNumber)
            {
                Console.WriteLine(number);
            }
        }

        static bool IsEvenNumber(int i)
        {
            return (i%2)==0;
        }

    }
}

 

       

posted @ 2013-05-12 17:44  --中庸--  阅读(4862)  评论(0编辑  收藏  举报