技术开发 频道

深入理解C#的委托和事件:事件的由来

  【IT168 专稿】我们继续思考上面的程序:上面的三个方法都定义在Programe类中,这样做是为了理解的方便,实际应用中,通常都是 GreetPeople 在一个类中,ChineseGreeting和 EnglishGreeting 在另外的类中。

  第一篇:深入理解C#中的委托和事件:委托的定义

  第二篇:深入理解C#的委托和事件:将方法绑定到委托

  现在你已经对委托有了初步了解,是时候对上面的例子做个改进了。假设我们将GreetingPeople()放在一个叫 GreetingManager的类中,那么新程序应该是这个样子的:

namespace Delegate {
//定义委托,它定义了可以代表的方法的类型
public delegate void GreetingDelegate(string name);
//新建的GreetingManager类
public class GreetingManager{
public void GreetPeople(string name, GreetingDelegate MakeGreeting) {
MakeGreeting(name);
}
}
class Program {
private static void EnglishGreeting(string name) {
Console.WriteLine(
"Morning, " + name);
}
private static void ChineseGreeting(string name) {
Console.WriteLine(
"早上好, " + name);
}
static void Main(string[] args) {
// ... ...
}
}
}

  这个时候,如果要实现前面演示的输出效果,Main方法我想应该是这样的:

static void Main(string[] args) {
GreetingManager gm
= new GreetingManager();
gm.GreetPeople(
"Jimmy Zhang", EnglishGreeting);
gm.GreetPeople(
"张子阳", ChineseGreeting);
}

  我们运行这段代码,嗯,没有任何问题。程序一如预料地那样输出了:

  Morning, Jimmy Zhang

  早上好, 张子阳

0
相关文章