.NET Action 与 Func

Action 与 Func是.NET类库中增加的内置委托,以便更加简洁方便的使用委托

内置委托类型,顾名思义Action和Func本身就是已经定义好的委托类型。两种委托类型的区别在于:Action委托签名不提供返回类型,而Func提供返回类型。
Action委托具有Action、Action<T1,T2>、Action<T1,T2,T3>……Action<T1,……T16>多达16个的重载,其中传入参数均采用泛型中的类型参数T,涵盖了几乎所有可能存在的无返回值的委托类型。

Func则具有Func、Func<T,Tresult>、Func<T1,T2,T3……,Tresult>17种类型重载,T1……T16为出入参数,Tresult为返回类型。

            var ts = new TimeSpan(0, 0, 100);

            Func<string, string, string> demo1 = (a, b) => { return string.Concat(a, b); };
            var t1 = demo1("123", "456");

            Func<int, int, int> demo2 = (param1, param2) =>
            {
                return param1 + param2;
            };

            var t2 = demo2(123, 456);

            //既然是委托类型,也同样可以与匿名函数、或者采用Lambda表达式结合使用:
            //匿名函数:
            Func<int, int, int> math1 = delegate (int param1, int param2)
            {
                return param1 + param2;
            };
            //Lambda:
            Func<int, int, int> math2 = (param1, param2) =>
            {
                return param1 + param2;
            };

            //Action的使用如同上面Func的使用一样,只是缺少了返回类型,直接调用委托函数。
            Action<int, int> math = (int param1, int param2) =>
                        {
                            Console.WriteLine((param1 + param2).ToString());
                        };
            math(3, 4);

            //C#的Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为“goes to”。 函数体多于一条语句的可用大括号括起。

            var temp = string.Empty;
            Action<string> actionDelegate = (x) => { temp = x; };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值