• C#学习笔记(28)——匿名委托和Lambda表达式


    说明(2017-11-21 18:51:32):

    1. 例子为求1~100的和,答案应该是5050(小学学算盘的时候,我爹就让我算,从1拨到100是多少呀?当时的我年幼无知,还不知道高斯小时候的故事,扒拉了半天高高兴兴的去说答案,结果说不对,艹!)

    2. Lambda表达式是将匿名委托给简化了的写法,省去了delegate关键字,省去了参数类型,但是要保证参数类型不能出错,也就是跟委托定义时的参数类型一致。

    3. 其他没啥好说的看注释,下一讲用Lambda表达式求水仙花数。

    正常写法:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace _05_匿名委托
    {
        class Program
        {
            static void Main(string[] args)
            {
                //调用方法
                Console.WriteLine(GetSum(1, 100));
                Console.ReadKey();
            }
            //定义求和的方法
            public static int GetSum(int x, int y)
            {
                int sum = 0;
                for (int i = x; i <= y; i++)
                {
                    sum += i;
                }
                return sum;
            }
        }
    }

    匿名委托写法:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace _05_匿名委托
    {
        class Program
        {
            public delegate int MyDel(int x, int y);
            static void Main(string[] args)
            {
                //记得最后要加分号,因为是赋值,跟js一样。
                MyDel myDel = delegate(int x, int y)
                {
                    //在委托里面定义求和的方法,匿名委托用于只需要调用一次的方法,省的再起个方法名了(说的就是上面的GetSum!)
                    int sum = 0;
                    for (int i = x; i <= y; i++)
                    {
                        sum += i;
                    }
                    return sum;
                };
                Console.WriteLine(myDel(1, 100));
                Console.ReadKey();
            }
        }
    }

    Lambda表达式写法:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace _05_匿名委托
    {
        class Program
        {
            public delegate int MyDel(int x, int y);
            static void Main(string[] args)
            {
                //尼玛连参数类型都省了,还有那个delegate关键字,太特么懒了!
                MyDel myDel = (a, b) =>
                {
                    int sum = 0;
                    for (int i = a; i <= b; i++)
                    {
                        sum += i;
                    }
                    return sum;
                };
                Console.WriteLine(myDel(1, 100));
                Console.ReadKey();
            }
        }
    }
  • 相关阅读:
    C++ const
    facebook hacker cup 2013资格赛第二题
    最大全1子矩阵
    java HashMap的keyset方法
    树状数组
    Java entry
    一个数学证明:1(1x1)(1x2)...(1xn)<=x1+x2+...+xn, xi在[0,1]
    传教士野蛮人过河问题python
    在cmd中为命令设置别名以及启动cmd时自动执行bat
    合取Λ,析取V,容易记混吗?
  • 原文地址:https://www.cnblogs.com/Jacklovely/p/7874895.html
Copyright © 2020-2023  润新知