zoukankan      html  css  js  c++  java
  • Lambda表达式

    初识Lambda表达式

    使用C#2.0中匿名方法查找“内部包含abc子串的所有字符串”

    list.FindAll(
    delegate(string s)
    {
    return s.IndexOf("abc") >= 0;
    }
    )

    使用C#3.0中的Lambda表达式查找“内部包含abc子串的所有字符串"

    list.FindAll(s=>s.IndexOf("abc") >= 0);

    Lambda表达式简介:

    C#2.0的匿名方法允许我们以内联的方式来实现委托实例,而C#3.0的Lambda表达式允许我们使用一种更接近人的思维、更自然的方式来实现类似于匿名方法同样的效果。

    Lambda表达式格式:

    (参数列表)=>表达式或者语句块

    可以有多个参数,一个参数或无参数。参数类型可以隐匿或者显示。如下:

    (x,y)=>x*y //多参数,隐式类型 =>表达式

    x=> x*10 //单参数,隐式类型=>表达式

    x=>{return x* 10;} //单参数,隐式类型=>语句块

    (int x) => x* 10 //单参数,显示类型=>表达式

    (int x) =>{ return x* 10;} //单参数,显示类型=>语句块

    ()=>Console.WriteLine(); //无参数

    Lamdba表达式格式要点

    1)Lambda表达戒指参数类型可以忽略,因为可以根据使用的上下文进行推断。

    2)Lambda表达式的主体(body)可以是表达式,也可以是语句块。

    3)Lambda表达式传入的实参将参与类型推断,以及方法重载辨析。

    4)Lambda表达式,表达式和表达式体可以被转表达式树。

    Lambda表达式与委托类型

    Lambda表达式L可以被转换为委托类型D,需要满足以下条件:

    1)L和D拥有相同的参数个数。

    2)L的参数类型要与D的参数类型相同。注意隐式类要参与类型辨析。

    3)D的返回类型与L相同,无论L是表达式,还是语句块。

  • 相关阅读:
    layer 弹出层 回调函数调用 弹出层页面 函数
    jquery 封装页面之间获取值
    ZTree 获取选中的项
    动态拼接SQL 语句
    翻译-使用Spring调用SOAP Web Service
    分享最新的博客到LinkedIn Timeline
    翻译-使用Spring WebService生成SOAP Web Service
    在Gradle中使用jaxb的xjc插件
    Gradle中的buildScript代码块
    健身4个月总结
  • 原文地址:https://www.cnblogs.com/cxmsky/p/3291861.html
Copyright © 2011-2022 走看看