A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王德钊 中级黑马   /  2013-1-30 14:34  /  1567 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

我们先看看怎么定义委托:
public delegate void GreetingDelegate(string name);、
我们看一下,这个和定义普通方法的区别。其实就是多了一个关键字delegate。有人问什么事委托,这个说了也不好理解。
我们先看看怎么用:
先定义一个普通方法
public void SayHello(string name)
{
      Console.WriteLine("大家好,我是{0}",name);
}
这里大家注意,我们开始定义的委托是 GreetingDelegate,然后我们在设置这个参数的时候,发现其实委托就是和string 一样,就是一个类型,只不过string 定义的是字符串的参数,而委托定义的是相同类型的方法。
private static void GreetPeople(string name, GreetingDelegate MakeGreeting)
{
      MakeGreeting(name);
}
然后具体看看怎么用。

static void Main(string[] args) {
               GreetPeople("Jimmy", SayHello);
               Console.ReadKey();
           }

输出:大家好,我是Jimmy。
大家看到这里是不是有点明白了呢?委托不久是一个类嘛!它和string一样,它定义了方法的类型。让方法和普通参数一样进行使用。这样能够使得写出的代码更加简洁,但是可以理解的是,我们平时使用时,委托不是非用不可,真正不能理解,那使用常规方法依然可以的。然后再看看和string有什么不同的。我们其实可以把很多歌方法绑定到同一个委托上,例如上面例子:
我们增加一个方法

public void GoodNight(string name)
{
      Console.WriteLine("晚上好,我是{0}",name);
}
怎么用呢:
GreetingDelegate delegate1;
delegate1=SayHello;
delegate1+=GoodNight;

delegate1("jimmy");
结果就会依次输出:大家好,我是jimmy   晚上好,我是 jimmy
那我们想到了,既然+=是绑定,想要解绑那就是-=啦。使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时(这里用“调用”这个词,是因为此变量代表一个方法),可以依次调用所有绑定的方法。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

3 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
正在学习,谢谢分享!
回复 使用道具 举报
经典的例子。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马