[我眼中的C#]委托和Lambda表达式

本文介绍了C#中委托的基本概念及使用方法,并详细解释了如何利用Lambda表达式简化匿名方法的创建过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

委托是 C#用来传递方法的引用的语法,和类相同,委托调用之前也要经过定义和声明的过程

private delegate string GetString();
        static void Main(string[] args)
        {
            ////委托是一个类型,这个类型可以赋值一个方法的引用
            ////ToString()是object类型的方法
            //int x = 40;
            ////GetString a=new GetString(x.ToString);//没有括号,说明没有调用这个方法,只是传递一个引用    
            //GetString a = x.ToString;
            ////string s = a();
            //string s = a.Invoke();
            //Console.WriteLine(s);//通过委托类型调用一个方法,跟直接调用一个方法是一样的

            //使用委托类型作为方法的参数
            PrintString method = Method1;
            PrintStr(method);
            method = Method2;
            PrintStr(method);
            Console.ReadKey();
        }

        private delegate void PrintString();

        static void PrintStr(PrintString print)
        {
            print();
        }

        static void Method1()
        {
            Console.WriteLine("Method1");
        }
        static void Method2()
        {
            Console.WriteLine("Method2");
        }

使用委托可以先创建匿名方法,但是C#提供了更为简单的方法—Lambda表达式

//Lambda表达式用来代替一个匿名方法,所以一个lambda也是定义了一个方法
            Func<int, int, int> plusFunc = (arg1, arg2) =>//lambda表达式的参数是不要声明类型的
            {
                return arg1 + arg2;
            };
            Console.WriteLine(plusFunc(9,6));
            Func<int, int> testFunc = a => a+1;//lambda表达式的参数只有一个的时候可以不加上括号,当函数体的语句只有依据的时候,可以不加上大括号,也可以不加上return语句
            Func<int, int> test2Func = (a) =>
            {
                return a + 1;
            };
            Console.ReadKey();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值