C#委托基础2——多路委托

 

C#委托基础系列原于2011年2月份发表在我的新浪博客中,现在将其般至本博客。

 

多路委托

class Program
    {
        public delegate void SayThingToS(string s);

        void SayHello(string s)
        {
            Console.WriteLine("你好{0}", s);
        }

        void SayGoodBye(string s)
        {
            Console.WriteLine("再见{0}", s);
        }

        static void Main(string[] args)
        {
            // 方式一
            SayThingToS say1, say2, say3, say4;
            Program p = new Program();
            say1 = p.SayHello;
            say1("xy"); // 你好xy

            say2 = p.SayGoodBye;
            say2("xy"); // 再见xy

            say3 = say1 + say2;
            say3("xy"); // 你好xy,再见xy

            say4 = say3 - say1;
            say4("xy"); // 再见xy


            // 方式二
            SayThingToS s1 = new SayThingToS(p.SayHello);
            s1 += new SayThingToS(p.SayGoodBye);
            s1("xy"); // 你好xy,再见xy

            SayThingToS s2 = new SayThingToS(p.SayHello);
            s2 += new SayThingToS(p.SayGoodBye);           
            s2 -= new SayThingToS(p.SayHello);
            s2("xy"); // 再见xy
        }
    }


本文参考自金旭亮老师的《.NET 4.0面向对象编程漫谈》有关代理的内容
上一篇:交通部回应共享单车新政:实名制如何确保信息安全


下一篇:视频复用器之复用拓扑图介绍