当你的才华不能撑起你的野心时,就是你该选择学习的时候了!

.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; };
复制代码

 

posted @   hofmann  阅读(167)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2020-04-24 同一个项目中使用MVC控制器和WebAPI控制器
点击右上角即可分享
微信分享提示