Unity C#中Delegate,Action,Func,Predicate的使用与区别
目的:C# 内置了几个常用委托 Action,Action,Func,Predicate,一般我们要用到委托的时候,尽量不要自己再定义一个委托了,就用系统内置的这几个已经能够满足大部分需求,且让代码符合规范。
C# 4.0 之后,Lamda ,Linq 表达式等许多新的程序写法层次不穷。与之相关的 Delegate,Action,Func,Predicate 的使用和区别让人迷惑。
委托 Delegate
匿名函数是针对 delegate 使用的。
泛型
private T GetData <T> where T:Object,new()
{
T t=new T;
return t;
}
<> 表示当前函数为泛型。
public delegate void Action<in T>(T obj);
之前必须将 Delegate 声明到类外面,作为全局的才能在其他地方看见并使用。
Action 无返回值
Action 没有参数也没有返回值。
Action < T > 无返回值
Action,Func 改变了这个状态,说白了就是系统定义好的 Delegate ,他有很多重载的方法,便于各种应用情况下的调用。因为在系统 System 命名空间下