Lambda表达式

lambda简介
lambda运算符:所有的lambda表达式都是用新的lambda运算符 " => ",可以叫他,“转到”或者 “成为”。运算符将表达式分为两部分,左边指定输入参数,右边是lambda的主体。

lambda表达式:
1.一个参数:param=>expr
2.多个参数:(param-list)=>expr
上面这些东西,记着,下面我们开始应用并阐述lambda,让你乐在其中。

lambda应用阐述
阐述这技术,我先上一个例子,然后再慢慢深入分析。例子如下:

[Java] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
namespace 阐述lambda
{
    public class Person
    {
        public string Name { get; set; }
        public int Age  {  get;set; }   
    }
    class Program
    {
 
        public static List<Person> PersonsList()
        {
            List<Person> persons = new List<Person>();
            for (int i = 0; i < 7; i++)
            {
                Person p = new Person() { Name = i + "儿子", Age = 8 - i, };
                persons.Add(p);               
            }
            return persons;
        }
 
        static void Main(string[] args)
        {
            List<Person> persons = PersonsList();
            persons = persons.Where(p => p.Age > 6).ToList();       //所有Age>6的Person的集合
            Person per = persons.SingleOrDefault(p => p.Age == 1);  //Age=1的单个people类
            persons = persons.Where(p => p.Name.Contains("儿子")).ToList();   //所有Name包含儿子的Person的集合
        }
    }
}


看啦上面的例子,相信你能看出它确实是个甜枣,呵呵,下面我们来看下(p=>p.Age>6)这样的表达式,到底是怎么回事,首先我们看下委托
[Java] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
//委托  逛超市
        delegate int GuangChaoshi(int a);
        static void Main(string[] args)
        {
            GuangChaoshi gwl = JieZhang;
            Console.WriteLine(gwl(10) + "");   //打印20,委托的应用
            Console.ReadKey();
        }
         
        //结账
        public static int JieZhang(int a)
        {
            return a + 10;
        }
[Java] 纯文本查看 复制代码
1
2
3
4
5
6
7
8
9
//委托  逛超市
        delegate int GuangChaoshi(int a);
        static void Main(string[] args)
        {         
           // GuangChaoshi gwl = JieZhang;
            GuangChaoshi gwl = p => p + 10;
            Console.WriteLine(gwl(10) + "");   //打印20,表达式的应用
            Console.ReadKey();
        }
委托跟表达式的两段代码,我们可以看出一些东东吧:其实表达式(p => p + 10;)中的 p 就代表委托方法中的参数,而表达式符号右边的 p+10,就是委托方法中的返回结果。 大侠绕道,小虾理解下。
下面再上两个稍微复杂点的理解理解。
1.多参数的
[Java] 纯文本查看 复制代码
1
2
3
4
5
6
7
8
//委托  逛超市
        delegate int GuangChaoshi(int a,int b);
        static void Main(string[] args)
        {           
            GuangChaoshi gwl = (p,z) => z-(p + 10);
            Console.WriteLine(gwl(10,100) + "");   //打印80,z对应参数b,p对应参数a
            Console.ReadKey();
        }
2. lambda主体运算复杂
[Java] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/// <summary>
       /// 委托  逛超市
       /// </summary>
       /// <param name="a">花费</param>
       /// <param name="b">付钱</param>
       /// <returns>找零</returns>
       delegate int GuangChaoshi(int a,int b);
       static void Main(string[] args)
       {
           GuangChaoshi gwl = (p, z) =>
           {
               int zuidixiaofei = 10;
               if (p < zuidixiaofei)
               {
                   return 100;
               }
               else
               {
                   return z - p - 10;
               }
           
           };
           Console.WriteLine(gwl(10,100) + "");   //打印80,z对应参数b,p对应参数a
           Console.ReadKey();
       }

 

 

posted @ 2020-05-22 09:33  幽暗森林之猪大屁  阅读(159)  评论(0编辑  收藏  举报