C#匿名方法 与 lambda表达式

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace _02
{
    class Program
    {
        static void Main(string[] args)
        {
            #region 匿名方法
            /*
            匿名方法:没有名字的方法,只用一次
            不能再类中直接定义,而是在委托变量赋值的时候,需要赋值一个方法,此时可以“现做现卖”,定义一个匿名方法传递给该委托.
            */
            M1Delegate my = M1;

            //匿名方法定义(无参数无返回值)
            M1Delegate my1 = delegate ()
            {
                Console.WriteLine("this is 匿名方法");
            };

            //匿名方法定义(有参数有返回值的匿名方法)
            M2Delegate my2 = delegate (string msg)
            {
                return msg;
            };

            Console.WriteLine(my2("有参数有返回值的匿名方法"));

            //有参数有返回值的匿名方法
            AddDeltegate add = delegate (int n1, int n2, int n3)
            {
                return n1 + n2 + n3;
            };
            Console.WriteLine(add(1, 2, 3));
            #endregion

            Console.WriteLine("=================================分割线==================================");


            #region lambda表达式

            //没有参数没有返回值的方法使用Lambda表达式
            M1Delegate l1 = () => { Console.WriteLine("lambda表达式!!!"); };

            l1();

            //有参数无返回值的方法使用lambda表达式
            testDelegate l2 = m => { Console.WriteLine(m); };
            l2("有参数无返回值的方法使用lambda表达式");
            #endregion

            //有参数有返回值的方法使用lambda表达式
            AddDeltegate add2 = (x, y, z) => { return x + y + z; };
            Console.WriteLine(add(4, 5, 6));

            //使用可变参数
            Deltegate1 d1 = (arr) => {

                int total = 0;
                for (int i = 0; i < arr.Length; i++)
                {
                    total += arr[i];
                }
                return total;
            };

            Console.WriteLine(d1(1, 2, 3, 4, 5, 6, 7, 8, 9));

            Console.ReadKey();
        }

        static void M1()
        {
            Console.WriteLine("OK");
        }
    }

    public delegate int Deltegate1(params int [] arr);
    public delegate int AddDeltegate(int n1, int n2, int n3);
    public delegate string M2Delegate(string MSG);
    public delegate void testDelegate(string MSG);
    public delegate void M1Delegate();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值