C#中System.Func<>与System.Action<>的区别
来源:互联网 发布:linux删除一个目录 编辑:程序博客网 时间:2024/04/28 18:15
使用并行编程可以同时操作多个委托,在介绍并行编程前先简单介绍一下两个泛型委托System.Func<>与System.Action<>。
Func<>是一个能接受多个参数和一个返回值的泛型委托,它能接受0个到4个输入参数, 其中 T1,T2,T3,T4 代表自定的输入类型,TResult为自定义的返回值。
public delegate TResult Func<TResult>()public delegate TResult Func<T1,TResult>(T1 arg1)public delegate TResult Func<T1,T2, TResult>(T1 arg1,T2 arg2)public delegate TResult Func<T1,T2, T3, TResult>(T1 arg1,T2 arg2,T3 arg3)public delegate TResult Func<T1,T2, T3, ,T4, TResult>(T1 arg1,T2 arg2,T3 arg3,T4 arg4)
Action<>与Func<>十分相似,不同在于Action<>的返回值为void,Action能接受1~16个参数
public delegate void Action<T1>()public delegate void Action<T1,T2>(T1 arg1,T2 arg2)public delegate void Action<T1,T2, T3>(T1 arg1,T2 arg2, T3 arg3)//.............public delegate void Action<T1,T2, T3, ,T4, ...... ,T16>(T1 arg1,T2 arg2,T3 arg3,T4 arg4,...... ,T16 arg16)
示例:
class Persion{ // a persion}class Teacher : Persion{ // a teacher}void DoSomething(Persion p){ //do nothing}int DoAnothing(Persion p){ return 0;}void DoTask(){ System.Action<Persion> GreatPersion = DoSomething; System.Func<Persion, int> GetPersionAge = DoAnothing; Persion p = new Persion(); Teacher t = new Teacher(); GreatPersion(p); GreatPersion(t); GetPersionAge(p); GetPersionAge(t);}
0 0
- C#中System.Func<>与System.Action<>的区别
- System.Func<>与System.Action<>
- System.Func<>与System.Action<>
- System.Func<>与System.Action<> 简单对比
- 泛型委托System.Func<>与System.Action<>
- Unity C#中Delegate,Action,Func,Predicate的使用与区别
- C#的委托区别 Action,Func, Predicate
- C#中Action、Func、Tuple的使用
- 通过IL分析C#中的委托、事件、Func、Action、Predicate之间的区别与联系
- 通过IL分析C#中的委托、事件、Func、Action、Predicate之间的区别与联系
- System.load 与 System.loadLibrary 的区别 Java中System.loadLibrary() 的执行过程
- system.out与system.erro的区别
- System.load()与System.loadlibrary()的区别
- System.nanoTime与System.currentTimeMillis的区别
- System.out与System.err的区别
- System.nanoTime与System.currentTimeMillis的区别
- System.nanoTime与System.currentTimeMillis的区别
- System.load 与 System.loadLibrary 的区别
- 中断驱动的自行车码表
- KMP算法详解
- 优先级反转
- mybatis二级缓存应用及与ehcache整合
- 我的丑陋计算器1.0
- C#中System.Func<>与System.Action<>的区别
- C/C++内存管理机制
- Git具体问题:如何安全的push文件到工作分支
- 记录Mybatis和Ehcache结合时启用延迟加载的一个坑
- git使用攻略
- leetcode题解日练--2016.6.23
- 读后摘要:RISC和CISC的效能之争
- Kali linux 安装RTL8192eu 驱动
- 找一个技术大牛做兼职,月入数万