我们先看看怎么定义委托:
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
那我们想到了,既然+=是绑定,想要解绑那就是-=啦。使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时(这里用“调用”这个词,是因为此变量代表一个方法),可以依次调用所有绑定的方法。
|