C#委托和事件详解(6)
来源:百度文库 编辑:神马文学网 时间:2024/07/04 20:28:28
我们运行这段代码,嗯,没有任何问题。程序一如预料地那样输出了:
Morning, Jimmy Zhang
早上好, 张子阳
现在,假设我们需要使用上一节学到的知识,将多个方法绑定到同一个委托变量,该如何做呢?让我们再次改写代码:
以下是引用片段:
staticvoidMain(string[]args){
GreetingManagergm=newGreetingManager();
GreetingDelegatedelegate1;
delegate1=EnglishGreeting;
delegate1+=ChineseGreeting;
gm.GreetPeople("JimmyZhang",delegate1);
}
输出:
Morning, Jimmy Zhang
早上好, Jimmy Zhang
到了这里,我们不禁想到:面向对象设计,讲究的是对象的封装,既然可以声明委托类型的变量(在上例中是delegate1),我们何不将这个变量封装到 GreetManager类中?在这个类的客户端中使用不是更方便么?于是,我们改写GreetManager类,像这样:
以下是引用片段:
publicclassGreetingManager{
//在GreetingManager类的内部声明delegate1变量
publicGreetingDelegatedelegate1;
publicvoidGreetPeople(stringname,GreetingDelegateMakeGreeting){
MakeGreeting(name);
}
}
现在,我们可以这样使用这个委托变量:
以下是引用片段:
staticvoidMain(string[]args){
GreetingManagergm=newGreetingManager();
gm.delegate1=EnglishGreeting;
gm.delegate1+=ChineseGreeting;
gm.GreetPeople("JimmyZhang",gm.delegate1);
}