asp.net func 委托
asp.net func 委托Func委托是system下的全局函数,不用我们自定,系统自定义的,供我们使用,带有多个重载.
一、Func<T>委托的定义
public delegate TResult Func<TResult>();
public delegate TResult Func<T1, TResult>(T1 arg1);
public delegate TResult Func<T1, T2, TResult>(T1 arg1, T2 arg2);
public delegate TResult Func<T1, T2, T3, TResult>(T1 arg1, T2 arg2, T3 arg3);
public delegate TResult Func<T1, T2, T3, T4, TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4);
public delegate TResult Func<T1, T2, T3, T4, T5, TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5);
二、参数说明
1、TResult表示。
2、委托所返回值 所代表的类型, T,T1,T2,T3,T4表示委托所调用的方法的参数类型。
3、Func委托声明的最后一个泛型类型参数是委托所接收方法的返回值类型,前面的泛型类型参数(如果有的话)就是委托所接收的方法的形参类型。
三、Func委托实例
static long Add(int x ,int y)
{
return x + y;
}
static void Main(string[] args)
{
//以下泛型委托变量接收拥有两个int类型参数,返回一个long数值的方法。
Func<int,int,long> func = Add;
long result = func(100,200); //result=300
}
Func<int, bool> myFunc = null;//全部变量
myFunc = x => CheckIsInt32(x);
//给委托封装方法的地方 使用了Lambda表达式
private bool CheckIsInt32(int pars)//被封装的方法
{
return pars == 5;
}
bool ok = myFunc(5);//调用委托
namespace FuncAsFuncArgu
{
class Program
{
static void Main(string[] args)
{
int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 };
Console.WriteLine(Process(Add, numbers, 0, 5));
Console.WriteLine(Process(Multiply, numbers, 1, 5));
Console.ReadKey();
}
static int Process(Func<int, int, int> op, int[] numbers, int from, int to)
{
int result = numbers[from];
for (int i = from + 1; i <= to; i++)
result = op(result, numbers[i]);
return result;
}
static int Add(int i, int j)
{
return i + j;
}
static int Multiply(int i, int j)
{
return i * j;
}
}
}