zoukankan      html  css  js  c++  java
  • .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;
            }
    
        }
    }

           

  • 相关阅读:
    Pull Request
    选择器
    常见HTTP状态码
    286. Walls and Gates
    200. Number of Islands
    1. Two Sum
    名片管理系统(python实现)
    k近邻算法(简单版)
    基数排序
    递归算法的调试
  • 原文地址:https://www.cnblogs.com/liangjie/p/3074354.html
Copyright © 2011-2022 走看看