Lambda表达式

来源:互联网 发布:oracle默认数据库 编辑:程序博客网 时间:2024/05/22 08:14


Lambda表达式是对匿名方法(只有方法体,没有方法名称)的一种改进。
(参数列表)=>{方法体}   (=>读作goes to)
(int x,int y)=>{return x>y?x:y;}
如果Lambda语句的方法只有一条return语句,且return语句有返回类型,则return关键字、分号、大括号都可以省略。
(x,y)=>x>y?x:y;

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Lambda{    class Program    {        static void Main(string[] args)        {            List<Student> listStu = new List<Student>();            Random r = new Random();            for (int i = 0; i < 50; i++)            {                Student s = new Student();                s.No = "S" + i.ToString("00");//                s.Math = r.Next(0, 100);                s.English = r.Next(0, 100);                s.Computer = r.Next(0, 100);                listStu.Add(s);            }            //统计平均成绩75以上的学生                int n = listStu.Count(                       s   //Lambda表达式的输入参数,这里表示输入一个学生                       =>                       (s.Computer + s.English + s.Math) / 3 >= 75  //返回一个bool值                       );//返回序列中的元素数量            Console.WriteLine("有{0}个学生的成绩在平均75分以上", n);            listStu.ForEach(    //针对列表中的每一个元素都做一个操作                s                =>                { Console.WriteLine("学号:{0}\t 数学:{1:00}\t 英语:{2:00}\t 计算机:{3:00}", s.No, s.Math, s.English, s.Computer); }//没有返回体,所以明确地使用大括号                );                     Console.ReadKey();        }           }    class Student    {        public string No { get; set; }        public double Math { get; set; }        public double English { get; set; }        public double Computer { get; set; }        public double Total { get { return Math + English + Computer; } }        public double Average { get { return (Total) / 3; } }    }}

效果:


但是,如果上面的代码写成:

Console.WriteLine("学号:{0}\t 数学:{1}\t 英语:{2}\t 计算机:{3}", s.No, s.Math, s.English, s.Computer);

效果就变成如下效果了:

算是个小知识点吧

0 0