void Demo_Func_Action( ) { Func<double, double, double> func = UseByFunc; Action<double, double> action = UseByAction; Predicate<double> predicate = UseByPredicate; Console.WriteLine("Func 返回:{0}", UseByFunc(10, 20)); Console.WriteLine("Predicate 返回:{0}", predicate(1)); } // 将会给Func用,因为Func是可以返回结果的 public double UseByFunc(double x, double y) { return x + y; } //给Action用,因为Action是不返回的 public void UseByAction(double x, double y) { Console.WriteLine("Action 内部结果:{0}",x-y); } public bool UseByPredicate(double a) { return true; }
总结:
1.Func<T>是有返回值的泛型委托,格式为Func<T1,T2,T..N,TResult>,T1,T2,T..N为多个参数,TResult为返回值
2.Ation<T>是没有返回值的泛型委托,格式为Action<T1,T2,T..N>,T1,T2,T..N为多个参数
3.Predicate<T>是返回值为Bool的泛型委托,相当于Func<T,bool>,主要用于校验,检查等