从SDK中可以找到关于delegate的定义和使用方法。
个人理解,delegate是声明委托类的关键字,声明委托和声明一个类差不多, 不过,可以不用为该委托类定义什么方法或属性。
如:
delegate void SomeDelegate();
然后为该委托类创建一个实例,创建实例需要一个构造参数,该参数指定所要委托的例程的名称。
如:
SomeDelegate OneInstance = new SomeDelegate(OneMethod);
void OneMethod()
{
//Do Something
}
这样的话在执行这个委托的实例的时候就相当于实行了这个委托实例所指定的所委托的方法!
另外要注意的是,用 delegate声明的委托类的格式要和委托实例所委托的方法的声明格式一样(即返回类型,参数个数和各参数类型要一致)。
如:
delegate string B(int i);
实例化B委托类型,并运行委托:
B b = new B(A);
b(12); //此委托运行后将返回string型的字符串“12”
此时所委托的方法A 需要很委托类型B的返回类型以及参数类型和个数都保持一致。
如:
string A(int i)
{
//Do Something;
return i.ToString();
}
以上写的只是基本的用法。