Lambda表达式

来源:互联网 发布:js div鼠标点击事件 编辑:程序博客网 时间:2024/05/22 17:40

原文链接:http://www.cnblogs.com/knowledgesea/p/3163725.html
原文链接:http://www.cnblogs.com/knowledgesea/p/3163725.html
原文链接:http://www.cnblogs.com/knowledgesea/p/3163725.html

前言
1、天真热,程序员活着不易,星期天,也要顶着火辣辣的太阳,总结这些东西。

    2、夸夸lambda吧:简化了匿名委托的使用,让你让代码更加简洁,优雅。据说它是微软自c#1.0后新增的最重要的功能之一。

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

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

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

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)这样的表达式,到底是怎么回事。。
首先我们看下委托

//委托  逛超市        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;        }
//委托  逛超市        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.多参数的

//委托  逛超市        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();        }

2lambda主体运算复杂 、

/// <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();        } Func<T>委托   T 是参数类型,这是一个泛型类型的委托,用起来很方便的。

static void Main(string[] args)
{
Func

static void Main(string[] args)
{
Func

0 0
原创粉丝点击