Func和Action委托的区别和简单使用
Func和Action委托的区别和简单使用
1、两种委托的常见形式和区别
(1)、Func委托有5个重载形式,区别仅在于它所指向的方法的签名的参数个数,分别如下:
Func<TResult>
Func<T,TResult>
Func<T1,T2,TResult>
unc<T1,T2,T3,TResult>
Func<T1,T2,T3,T4,TResult>
其中T,T1,..T4是委托指向的方法的参数的类型,TResult为方法的返回类型。
(2)、Action委托也有5个重载形式,分别如下:
Action
Action<T>
Action<T1,T2>
Action<T1,T2,T3>
Action<T1,T2,T3,T4>
其中T,T1,..T4是委托指向的方法的参数的类型。
从上面的委托形式我们就可以分析出来,Func和Action委托的唯一区别在于Func要有返回值, Action没有返回值。
2、简单示例代码
class Program { static void Main(string[] args) { int num = 5; /* Func和Action委托的唯一区别在于Func要有返回值, Action没有返回值 */ FirstCalcSquare calFirst = Square;//delegate Console.WriteLine("The square of {0} is {1}.", num, calFirst(num)); Func<int, int> funcTest = Program.Square;//Func Console.WriteLine("The square of {0} is {1}.", num, funcTest(num)); SecondCalcSquare calSecond = GetSquere; calSecond(num);//delegate Action<int> actionTest = Program.GetSquere; actionTest(num);//Action Console.ReadLine(); } private delegate int FirstCalcSquare(int input); private static int Square(int input) { return input * input; } private delegate void SecondCalcSquare(int input); private static void GetSquere(int input) { Console.WriteLine("The square of {0} is {1}.", input, input * input); } }
浙公网安备 33010602011771号