C#的委托,类似C++里的函数指针,相当于是给函数取了一个别名,其实质上是一种引用类型,使用前需要先创建一个委托对象;一个委托对象可以持有一个或多个方法的引用,持有的方法可以是实例方法,也可以是静态方法。
系统提供的委托类型
Action
Action是一种至少0个参数、无返回值的泛型委托:
//格式:
Action act = new Action(对象名.方法名); //实例化对象
act.Invoke(); //调用(Invoke可省略,即写成:act();)
//举个例子,假设此时存在一个类Test(),其中有这样一个方法:
public void MyMethod()
{
Console.WriteLine("Hello World!");
}
//在Main方法中调用:
static void Main(string[] args)
{
Test t = new Test();
Action act = new Action(t.MyMethod);
act(); //像调用方法一样去使用委托即可
}
//运行结果为:
Hello World!
Func
Func是一种至少0个参数、至多16个参数、必须有返回值的泛型委托(注意返回值类型要写在最后)
//格式
Func<参数类型, 返回值类型> func = new Func<参数类型, 返回值类型>(对象名.方法名); //实例化对象
func(参数列表); //调用
//举个栗子,假设此时存在一个类Test(),其中有这样一个方法:
public double MyMethod(int a,int b)
{
return a + b;
}
//在Main方法中调用:
static void Main(string[] args)
{
Test t = new Test();
Func<int, int, double> func = new Func<int, int