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

       var inString = list.FindAll(delegate(string s)  

    1. { return s.Indexof("YJingLee") >= 0; }); 

       var inString = list.FindAll(s => s.Indexof("YJingLee") >= 0); 

        Lambda表达式格式:(参数列表)=>表达式或语句块
        具体意义:定义Lambda接受参数列表,运行表达式或语句块返回表达式或语句块的值传给这个参数列表。

        C# ambda表达式参数类型可以是隐式类型或显式类型。在显式列表中,每个参数的类型是显式指定的,在隐式列表中,参数的类型由Lambda表达式出现的语境自动推断类型。
        Lambda表达式的参数列表可以有一个或多个参数,或者无参数。在有单一的隐型参数的lambda表达式中,圆括号可以从参数列表中省略。
        例如:

    1. (x, y) => x * y;//多参数,隐式类型=>表达式  
    2. x => x * 10;//单参数,隐式类型=>表达式  
    3. x => { return x * 10; }; //单参数,隐式类型=>语句块  
    4. (int x) => x * 10;//单参数,显式类型=>表达式  
    5. (int x) => { return x * 10; };//单参数,显式类型=>语句块  
    6. () => Console.WriteLine(); //无参数 

        下面看这个例子:
        在前面的帖子中,我们写了一个User类及增加了2个人,接下来,我们使用由LINQ提供的新的Where和Average方法来返回集合中的人的一个子集,以及计算这个集合中的人的平均年龄:

    1. List<User> user = new List<User>{  
    2. new User{Id=1,Name="YJingLee",Age=22},  
    3. new User{Id=2,Name="XieQing",Age=25},  
    4. };  
    5. //获取特定人时所用的过滤条件,p参数属于User类型  
    6. var results = user.Where(p => p.Name == "YJingLee").ToList();  
    7. //用User对象的Age值计算平均年龄  
    8. var average = user.Average(p => p.Age); 

      对这个Lambda表达式做个简要分析:

    1. var resultsdelegate = user.Where(delegate(User p)  
    2. {  
    3. return p.Name == "YJingLee";// 返回一个布尔值  
    4. });  
    5. var averagedelegate = user.Average(delegate(User p)  
    6. {  
    7. return p.Age;  
    8. }); 

    C# Lambda表达式L可以被转换为委托类型D,需要满足以下条件:
        L的参数类型要与D的参数个数相等,类型相同,返回类型相同,无论是表达式,还是语句块。注意隐式类型要参与类型辨析。

  • 相关阅读:
    转:Contrastive Loss (对比损失)
    转:Siamese network 孪生神经网络
    pytorch的nn.MSELoss损失函数
    python创建包
    pytorch中如何在lstm中输入可变长的序列
    转:python中with的用法
    转:np.insert函数
    转:分类模型的评估指标
    Codeforces Round #525 (Div. 2) C. Ehab and a 2-operation task(构造)
    Educational Codeforces Round 53 (Rated for Div. 2) C. Vasya and Robot
  • 原文地址:https://www.cnblogs.com/aggierwyp/p/lambda.html
Copyright © 2011-2022 走看看