介绍
本文章用最简单的方式讲述关于C#委托的使用方法
(在开始之前以下几点你必需知道)
委托
- 有点象方法的容器
- 当声明一个委托就象声明一个新类你可以在对象中把它实例化
- 可以存储一个或多个方法同样可以移去
- 方法要存储在委托中必需有相同的参数和返回类型
如果你不明白最后点不要担心它是比较特别的:)
编码
这是怎样声明一个委托...
//u declare it by
// void (list of parameters)
public delegate void MyMessageDelegate(string msg);
下一步,创建你自己的方法。
正如你所见,我创建2个名为MessageShower和AnotherMessageShower方法正如之前所说的参数要相同。
delegate(string chicken,int bananas)
yourmethod(string chicken,int bananas)
private void MessageShower(string message)
{
//shows the string argument in a messagebox
MessageBox.Show("MessageShower - " + message);
}
private void AnotherMessageShower(string anothermessage)
{
//shows the string argument in a messagebox
MessageBox.Show("AnotherMessageShower - " + anothermessage);
}
现在我们声明了委托及两个方法,现在我们将开始学习怎样使用委托。我们拖放一个button到form在点击事件处我们可以这样做
private void btnTryButton_Click(object sender, EventArgs e)
{
MyMessageDelegate MessageObject = new MyMessageDelegate(MessageShower);
MessageObject += new MyMessageDelegate(AnotherMessageShower);
MessageObject("Message Sent From Da Delegate!");
}
这是十分重要的一部分一旦你明白,委托实际是十分简单的=D
第一行
MyMessageDelegate MessageObject = new MyMessageDelegate(MessageShower);
这行是创建一个新的MyMessageDelegate(委托)的新实例,MyMessageDelegate就象类一样使用。
正如之前说的MessageShower存储在容器中。
第二行,
MessageObject += new MyMessageDelegate(AnotherMessageShower);
这是委托中的广播,意味你有多于一个方法在委托对象中被引用。
这行代码增加另一个方法到已经创建的委托对象中所以现在它包含2个方法
- MessageShower
- AnotherMessageShower
然后第三行即最后一行..
MessageObject("Message Sent From Da Delegate!");
这里,你使用委托对象如方法一样。传送字符参数“Message Sen From Da Delegate!”到MessageObject将会激活存储在委托的方法!明白没有?
结果如下:先
MessageShower("Message Sent From Da Delegate!");

然后
AnotherMessageShower("Message Sent From Da Delegate!");

另一方面,你可以用-=操作符移去委托中的方法。
MessageObject -= new MyMessageDelegate(AnotherMessageShower);
这将移去委托中的方法
委托被用在什么场合?
有时当前你想使用一个方法,但你不知道它什么时候要执行,你想该方法按照你你想的方式去执行,委托十分合适。
注:摘自:http://www.ideaplan.com.cn