首先通过一个例子来阐述delegate的用法。
1
using System;
2
class MyDelegate
3
下面声明一个delegate实例,然后调用。 2
3
1
using System;
2
delegate void EatDelegate(string food);//此处签名应该与chEat方法签名保持一致
3
class MyDelegate
4
2
3
4
输出结果是:
葱花吃西瓜
样样吃西瓜
大蒜吃西瓜
但是:声明三次方法过于麻烦,用"委托链"解决。代码如下:
1
using System;
2
delegate void EatDelegate(string food);
3
class MyDelegate
4
为了让程序富有逻辑性,同时为了说明C#2.0的匿名方法,请看如下代码: 2
3
4
1
using System;
2
delegate void EatDelegate(string food);
3
class MyDelegate
4
请注意:上面chEat(),yyEat(),dsEat()过于繁琐,可以用C# 2.0匿名方法解决: 2
3
4
1
using System;
2
delegate void EatDelegate(string food);
3
class MyDelegate
4
输出结果: 2
3
4
葱花吃西瓜
样样吃西瓜
大蒜吃西瓜
由此可以得出委托的特点:
(1)委托是类型安全的。
(2)委托允许将方法作为参数传递。
(3)委托可以定位回调方法。
(4)委托可以定义委托链。