C#基础:委托之Action<T>和Func<T>的用法(转)
2012-09-01 12:04
701 查看
我们在使用委托的过程中,除了为每个参数和返回类型定义一个委托之外,也就是说为每一个方法(作为参数的方法)定义一个委托,我们还可以使用Action<T>和Func<T>委托。
泛型Action<T>委托表示引用一个void返回类型的方法。Action<T>委托类存在不同的变体,可以传递至多16种不同的参数类型,没有泛型参数的Action类可以调用没有参数的方法。例如:Action<in T1>调用带一个参数的方法,Action<in T1,in T2>调用带两个参数的方法等
Func<T>的用法和Action<T>用法类似,但是Func<T>表示引用一个带返回类型的方法,Func<T>也存在不同的变体,至多可以传递16个参数类型和1个返回类型,例如:Func<in T1,out Resout>表示带一个参数的方法,Func<in T1,in T2,out Resout>表示调用带两个参数的方法。
下面就直接给一个Action<T>和Func<T>的例子
输出结果:
?
泛型Action<T>委托表示引用一个void返回类型的方法。Action<T>委托类存在不同的变体,可以传递至多16种不同的参数类型,没有泛型参数的Action类可以调用没有参数的方法。例如:Action<in T1>调用带一个参数的方法,Action<in T1,in T2>调用带两个参数的方法等
Func<T>的用法和Action<T>用法类似,但是Func<T>表示引用一个带返回类型的方法,Func<T>也存在不同的变体,至多可以传递16个参数类型和1个返回类型,例如:Func<in T1,out Resout>表示带一个参数的方法,Func<in T1,in T2,out Resout>表示调用带两个参数的方法。
下面就直接给一个Action<T>和Func<T>的例子
using System; namespace DelegateFuncAction { class Program { static void Main(string[] args) { Func<double, double,double> DoAddtion = calculate.addtion; double result = DoAddtion(20, 30); Console.WriteLine("Func带返回参数委托做加法结果为:{0}",DoAddtion(10,20)); calculate c=new calculate(); Action<double, double> DoSubstraction = c.substraction; DoSubstraction(90, 20); } } class calculate { public static double addtion(double x, double y) { return x + y; } public void substraction(double x, double y) { Console.WriteLine("Action不带返回参数委托做减法结果为:{0}",x-y); } } }
输出结果:
?
相关文章推荐
- C#基础:委托之Action<T>和Func<T>的用法
- C#基础:委托之Action<T>和Func<T>的用法
- C#基础:委托之Action<T>和Func<T>的用法
- C#基础:委托之Action<T>和Func<T>的用法
- 【基础】C#:委托Action、Action<T>、Func<T>、Predicate<T>
- C# Action<T>、Func<T>、Predicate<T>委托的区别、用法
- C#控制台基础 action<int,string> 有参数,无返回值委托的用法示例
- 提问c# action<> func<> 这2个委托怎么用和理解
- 浅谈C#中常见的委托<Func,Action,Predicate>(转)
- c#中Action<T>和Func<T>委托
- C#委托Action、Action<T>、Func<T>、Predicate<T>
- C#的委托 Action<>和Func<>
- C#中Predicate<T>与Func<T, bool>泛型委托的用法实例
- C#的委托 Action<>和Func<>
- C#中的Action<T>、Func<T>委托和Lambda表达式
- C#委托Action、Action<T>、Func<T>、Predicate<T>
- [转]C#委托Action、Action<T>、Func<T>、Predicate<T>
- C#中 Action<T>和Func<T>的用法
- C#中的Action<>和Func<> 委托区别
- C#.NET的Linq查询、lambda、委托:Func<>和Action