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>,主要用于校验,检查等
来源:https://www.cnblogs.com/bug01/p/10950077.html