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();
    }
  • 相关阅读:
    linux 查看端口占用情况
    linux下python脚本的运行
    js 事件冒泡
    linux下设置path
    查看和修改Linux的时间
    逗号分割的字符串存储到临时表中
    Centos下搭建Web服务器
    如何让input和img水平对齐
    操作系统方面书籍推荐
    Linus的十大名言
  • 原文地址:https://www.cnblogs.com/genesis/p/4889201.html
Copyright © 2011-2022 走看看