zoukankan      html  css  js  c++  java
  • 多播委托

    public delegate void Mydel();
    class Program
    {
        static void Main(string[] args)
        {
            Mydel del = T1;
            del += T2;
            del += T3;
            del += T4;
            del -= T2;
            del();        
        //等价于,反编译器查看:

        Mydel del = new Mydel(Program.T1);
        del = (Mydel)Delegate.Combine(del, new Mydel(Program.T2));//Combine返回的是父类类型,需要强转子类
        del = (Mydel)Delegate.Combine(del, new Mydel(Program.T3));
        del = (Mydel)Delegate.Combine(del, new Mydel(Program.T4));
        del = (Mydel)Delegate.Remove(del, new Mydel(Program.T2));
        del();

            Console.ReadKey();
        }
        public static void T1()
        {
            Console.WriteLine("我是T1");
        }
        public static void T2()
        {
            Console.WriteLine("我是T2");
        }
        public static void T3()
        {
            Console.WriteLine("我是T3");
        }
        public static void T4()
        {
            Console.WriteLine("我是T4");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Action<string> action = T1;
            action += T2;
            action += T3;
            action += T4;
            action("你好");
            Console.ReadKey();
        }
        public static void T1(string s)
        {
            Console.WriteLine("我是T1"+s);
        }
        public static void T2(string s)
        {
            Console.WriteLine("我是T2" + s);
        }
        public static void T3(string s)
        {
            Console.WriteLine("我是T3" + s);
        }
        public static void T4(string s)
        {
            Console.WriteLine("我是T4" + s);
        }
    }
    
    反编译器:
    private static void Main(string[] args)
    {
        Action<string> action = new Action<string>(Program.T1);
        action = (Action<string>)Delegate.Combine(action, new Action<string>(Program.T2));//Combine返回的是父类类型,需要强转子类
        action = (Action<string>)Delegate.Combine(action, new Action<string>(Program.T3));
        action = (Action<string>)Delegate.Combine(action, new Action<string>(Program.T4));
        action("你好");
        Console.ReadKey();
    }
  • 相关阅读:
    Java Applet实现五子棋游戏
    CrawlScript脚本语言实现网络爬虫
    Eclipse集成Git的实践
    以图表形式分析和统计数据
    爬虫抓取分页数据的简单实现
    爬虫的简单实现
    使用htmlparser爬虫技术爬取电影网页的全部下载链接
    使用webcollector爬虫技术获取网易云音乐全部歌曲
    百度地图API-覆盖物
    百度地图API-控件
  • 原文地址:https://www.cnblogs.com/genesis/p/4889201.html
Copyright © 2011-2022 走看看