委托,类似函数指针,但是函数指针只能引用静态方法,而委托不仅能引用静态方法,也能引用实例方法。
C#中的委托是将一个对象中的方法传递给另一个能调用该方法的类的某个对象,通过继承System.Delegate中的一个类来实现。具体步骤如下:
1.声明一个委托对象,其参数形式一定要和你想要包含的方法的参数形式一致。
2.定义所有你要定义的方法,其参数形式和第一步中声明的委托对象的参数形式必须的相同。
要求:(1)参数个数、类型、顺序必须完全一致。如是string类型,也要求是相同的string类型;int类型,也要是int类型。
(2)返回值必须一致。如void什么的。
(3)传入的方法中不能带参数,只能写方法名。
3.创建委托对象并将所希望的方法包含在该委托对象中。
4.通过委托调用包含在其中的各个方法。
下面是委托的一个简单的例子:
//委托声明
delegate int NumOpen(int a,int b);
class Class1
{
static void Main(string[] args)
{
Class c1=new Class1();
NumOpen p1=new NumOpen(c1.Add);//委托实例化,参数是要使用的参数名,且不带括号
Console.WriteLine(p1(1,2)); //委托调用
Console.ReadKey();
}
private int Add(int num1,int num2)
{
return(num1+num2);
}
}
运行后的结果是3