Action<T>和Func<T>委托事例
using System; //除了为每个参数和返回类型定义一个新委托类型之外,还可以使用Action<T>和Func<T>委托。
//泛型Action<T>委托表示引用一个void返回类型的方法。这个委托类存在不同的变体,可以传递至多16种不同的参数类型。
//没有泛型参数的Action类可以调用没有参数的方法。
//Action<in T>调用带一个参数的方法,Action<in T1,in T2>调用带两个参数的方法,Action<in T1,in T2,in T3,in T4,in T5,in T6,in T7,in T8>
//调用带8个参数的方法。 //Func<T>委托可以以类似的方式使用。Func<T>允许调用带返回类型的方法。与Action<T>类似,Func<T>也定义了不同的变体,
//至多也可以传递16个参数类型和一个返回类型。Func<out TResult>委托类型可以调用带返回类型且无参数的方法,Func<in T,out TResult>
//调用带一个参数的方法,Func<in T1,in T2,in T3,in T4,out TResult>调用4个参数的方法。
namespace Action和Func泛型委托的事例
{
class Program
{
static void Main(string[] args)
{
//泛型委托数组
Func<double ,double>[] operations = {
MathOperations.MultiplyByTwo,
MathOperations.Squre };
for(int i = ;i<operations.Length;i++){
System.Console.WriteLine($"Using operations[{i}]");
ProcessAndDisplayNumber(operations[i],2.0);
ProcessAndDisplayNumber(operations[i],7.94);
ProcessAndDisplayNumber(operations[i],1.414);
System.Console.WriteLine(); }
//Console.WriteLine("Hello World!");
} //使用该委托,并将ProcessAndDisplayNumber()方法作为参数:
static void ProcessAndDisplayNumber(Func<double,double> action,double value){
double result = action(value);
System.Console.WriteLine($"Value is {value},result of operation is {result}"); }
} //声明下需要调用的方法
class MathOperations{
public static double MultiplyByTwo(double value)=>value*;
public static double Squre(double value)=>value*value;
}
}