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

  1. 云栖社区>
  2. 博客>
  3. 正文

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

it徐胖子 2012-11-26 15:35:00 浏览769
展开阅读全文

 

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面向对象编程漫谈》有关代理的内容

网友评论

登录后评论
0/500
评论