一、Action
Action封装的方法没有参数也没有返回值,声明原型为:
public delegate void Action();
二、Action<T>
Action<T>没有返回值,可以有多个参数,,两个参数的声明原型为:
public delegate void Action<in T1, in T2>(T1 arg1, T2 arg2);
三、Func<T>
Func<T>始终都会有返回值,返回值的类型是参数中最后一个,两个参数一个返回值的声明原型为:
public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2);
四 、Predicate<T>
Predicate<T>委托表示定义一组条件并确定指定对象是否符合这些条件的方法,返回值始终为bool类型,声明原型为:
public delegate bool Predicate<in T>(T obj);
五、实例
namespace CSharpTest
{
class Program
{
static void Main(string[] args)
{
Action Hello = ()=> Console.Write("Hello World\n");
Action<int, int> Result = (ln,rn) => Console.Write("the Sum ={0}\n", ln + rn);
Func<int, int, int> GetSum = (ln, rn) => ln + rn;
Predicate<int> IsZero = (num) => num == 0;
Hello();
Result(3,2);
var sum = GetSum(10,3);
Console.Write("the Sum ={0}\n", sum);
bool res = IsZero(10);
Console.Write("the res = {0}\n", res);
Console.ReadKey();
}
}
}
运行结果: