C# 中的委托和事件(3)

作者在 2007-10-21 17:40:00 发布以下内容

事件的由来

    我们继续思考上面的程序:上面的三个方法都定义在Programe类中,这样做是为了理解的方便,实际应用中,通常都是 GreetPeople 在一个类中,ChineseGreeting和 EnglishGreeting 在另外的类中。现在你已经对委托有了初步了解,是时候对上面的例子做个改进了。假设我们将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);

}

C# | 阅读 1019 次
文章评论,共0条
游客请输入验证码