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

    1.须知

    首先让我们理解下如何定义一个匿名函数 例如事件

     this.Closed += delegate(object sender, EventArgs e) { MessageBox.Show("窗体已经关闭了"); };

    首先关闭事件的事件是带有object sender, EventArgs e  两个参数的委托,我们也可以使用Lambda表达式进行编写.

     this.Closed+=(sender,e)=>{MessageBox.Show("窗体已经关闭了"); }; 这样写大家就很明白了.

     Sender,e 分别代表两个参数 =>{} 代表具体执行的地方.

    2.使用

    在实际应用当中我们会在linq当中使用它,因为泛型给我提供了很多有效的方法,请看以下代码

    代码
     List<UserClass> Lists = new List<UserClass>
                {
                    
    new UserClass{ Age=15, Name="先生A"},
                    
    new UserClass{ Age=16, Name="先生B"},
                    
    new UserClass{ Age=17, Name="女士A"},
                    
    new UserClass{ Age=22, Name="女士B"},
                    
    new UserClass{ Age=24, Name="女士C"},
                    
    new UserClass{ Age=26, Name="女士D"},
                    
    new UserClass{ Age=27, Name="女士E"},
                    
    new UserClass{ Age=28, Name="女士F"}
                };

    lst_Name.ItemsSource 
    = Lists.Where(mode => { return mode.Age > 20; });

     如果我们用lists 打点,会出现很多<> 这样的方法,我们看到这个标志就应该知道了,就是泛型方法,那我们传入的参数就应该符合条件,那如果我们用匿名委托的写法也不是不可以,只不过相对繁琐,这样lambda表达式就很好啦。

    例如:

    public delegate TResult Func<TArg0, TResult>(TArg0 arg0) 一个委托泛型方法。

    针对这个方法我们如何写呢: Func<int, bool> myFunc = x => x == 5;

    调用:myFunc (6) 结果为false

    3.规则

  • Lambda 包含的参数数量必须与委托类型包含的参数数量相同。

  • Lambda 中的每个输入参数必须都能够隐式转换为其对应的委托参数。

  • Lambda 的返回值(如果有)必须能够隐式转换为委托的返回类型。
    其实这3项和匿名委托时一样的.

  •  

     

查看全文
  • 相关阅读:
    HTML th nowrap 属性
    C 语言实例 – 判断闰年
    Java MySQL 连接
    Linux shapecfg命令
    C 简介
    Java 之 HashSet 集合
    Java 之 Set 接口
    Java 之 LinkedList 集合
    Java 之 List 接口
    JavaScript 之 事件(详解)
  • 原文地址:https://www.cnblogs.com/tongly/p/1872785.html
  • Copyright © 2011-2022 走看看