C#委托基础2——多路委托-阿里云开发者社区

开发者社区> 开发与运维> 正文

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

简介:   C#委托基础系列原于2011年2月份发表在我的新浪博客中,现在将其般至本博客。   多路委托 class Program { public delegate void SayThingToS(string s); void SayHello(string s) { Console.Wr

 

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章