• Lambda表达式


      

    返回类型  方法名(参数){方法体}  //普通方法
    delegate (参数列表) {方法体}  //匿名方法
    (参数列表)=>{方法体}  //

      Lambda表达式的引入是与委托类型的使用密切相关的,本质上,Lambda表达式只是用更简单的方式来书写匿名方法,从而彻底简化.NET委托类型的使用。

      下面用一个例子,展示简化的过程:

      eg:找出整数List<T>中的偶数,我们调用了List<T>类型的FindAll()方法.这个方法需要System.Prediate<T>泛型委托,用于接收类型为T的输入参数并返回一个布尔值。

    • 传统的委托使用方式。

    定义一个单独的方法。

    static void Main(string[] args)
            {
                List<int> list = new List<int>() { 1,5,10,20,33};
    
                //使用传统委托语法调用FindAll
                Predicate<int> callback = new Predicate<int>(IsEvenNumber);
                List<int> evenNumbers = list.FindAll(callback);
    
                foreach (int num in evenNumbers)
                {
                    Console.Write("{0}	",num);
                }
                Console.ReadLine();
            }
     static bool IsEvenNumber(int i)
            {
                return (i % 2) == 0;
            }
    • 匿名方法取代显示的委托函数。


    不需要完整的方法定义。

    static void Main(string[] args)
            {
                List<int> list = new List<int>() { 1, 5, 10, 20, 33 };
                //使用匿名方法
                List<int> evenNumbers = list.FindAll(
                    delegate(int i)
                    {
                        return (i % 2 == 0);
                    }
                    );
                foreach (var num in evenNumbers)
                {
                    Console.WriteLine("{0}",num);
                }
                Console.ReadLine();
            }
    • 使用Lambda表达式。

    进一步的简化。底层的委托消失的无隐无踪。

    static void Main(string[] args)
            {
                List<int> list = new List<int>() { 1, 5, 10, 20, 33 };
                
                //使用Lambda表达式
                List<int> evenNumbers = list.FindAll(i=>(i%2)==0);
    
                foreach (var num in evenNumbers)
                {
                    Console.WriteLine("{0}",num);
                }
                Console.ReadLine();
            }

      Lambda表达式可以应用与任何匿名方法可以应用的场合。Lambda表达式的格式:先定义参数列表,=>(可读为:goes to)紧随其后,然后是表达式。即Arguments ToProcess=>Statements ToProess Them

      Lambda表达式也可以是一个代码块,包含多条语句。

  • 相关阅读:
    [转载]试着解析宾得为何不出全幅
    [转载]试着解析宾得为何不出全幅
    [转载]从KX、KR用户的购镜选择谈到K5和其他
    [转载]从KX、KR用户的购镜选择谈到K5和其他
    pdf工具的使用
    Xshell 添加快速命令使用
    linux remove和 rename函数使用
    linear correlation coefficient|Correlation and Causation|lurking variables
    SST|SSR|SSE| r 2|与Sx x &Sx y & Syy的关系|
    the least-squares criterion|Sxx|Sxy|Syy|Regression Equation|Outliers|Influential Observations|curvilinear regression|linear regression
  • 原文地址:https://www.cnblogs.com/hunji-fight/p/3215344.html
Copyright © 2020-2023  润新知