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();
    }
  • 相关阅读:
    父子进程 signal 出现 Interrupted system call 问题
    一个测试文章
    《淘宝客户端 for Android》项目实战 html webkit android css3
    Django 中的 ForeignKey ContentType GenericForeignKey 对应的数据库结构
    coreseek 出现段错误和Unigram dictionary load Error 新情况(Gentoo)
    一个 PAM dbus 例子
    漫画统计学 T分数
    解决 paramiko 安装问题 Unable to find vcvarsall.bat
    20141202
    js
  • 原文地址:https://www.cnblogs.com/genesis/p/4889201.html
Copyright © 2011-2022 走看看