Func | Action | |
---|---|---|
相同点 | 都是c#内置的委托,都在System命名空间下,因此全局可见。 | |
不同点 | 必须要有返回值 | 不能有返回值 |
书写方式 | Func<T1,T2,,,TResult>,最后一个参数必定是返回值的类型。 | Action<T1,T2,,,> |
所谓“委托”,就是找个中间商,让中间商去找干活的人(相当于方法)这样就省去了直接面向干活的人,是一种工业分工的思想。
delegate是C#中的一种类型,它实际上是一个能够持有对某个方法的引用的类。
delegate声明的变量与delegate声明的事件,并没有本质的区别,事件是在delegate声明变量的基础上包装而成的,类似于变量与属性的关系(在IL代码中可以看到每一个delegate声明的事件都对应是私有的delegate声明的变量),提升了安全性。
Action 与Func:这两个其实说白了就是系统定义好的Delegate,他有很多重载的方法,便于各种应用情况下的调用。他在系统的System命名空间下,因此全局可见。