看了几个相关的视频教程,对delegate一直很迷惑,于是动手看了些例子。有点收获,于是写成文章,提供给我一样的初学者一起学习。
我更喜欢称呼delegate为代理。它是一个执行方法的通道,申明在主体里。至于执行什么方法写在主体外面。这样一个好处就是主体中就预留了一个对外的口子,做什么事情以后考虑。
准备一
1)主体内申明
public delegate void 被附体的代理申明(int intTemp);
2) 主体内申明使用代理的方法
public void myFunction(被附体的代理申明 被附体的方法)
{
int i = 1;
被附体的方法(i);
MessageBox.Show(this,intBtn1.ToString());
}
准备二
1) 主体外写准备附体的方法,上面申明的参数和返回值一致
private void 准备附体的方法1(int intTemp)
{
intBtn1 = intTemp * 10;
}
你也可以这样申明
private void 准备附体的方法2(int intTemp)
{
intBtn1 = intTemp * 100;
}
准备三 使用
1)使用方法1 this.myFunction(new 被附体的代理申明(准备附体的方法1));
使用方法2 this.myFunction(new 被附体的代理申明(准备附体的方法2));
这样myfunction可以做很多不同的事情了。不用改myfunction的代码,就可以执行各样“准备附体的方法”
更多可参考委托教程
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/csref/html/vcwlkdelegatestutorial.asp