• C# Delegate 使用


    Delegate, Event
    Delegate其实就相当于C++/C里面的函数指针.用法如下:
    1.最常规的使用
        class Program
        {
            public delegate void NumberChangedEventHandler(int number);
            class Publisher
            {
                public NumberChangedEventHandler NumberChanged;  
            }
            class Subscriber
            {
                public void OnNumberChanged(int number)
                {
                    string message = "New value is " + number;
                    Console.WriteLine(message);
                }
            }
            static void Main(string[] args)
            {
                Publisher pub = new Publisher();
                Subscriber sub1 = new Subscriber();
                Subscriber sub2 = new Subscriber();
                pub.NumberChanged += new NumberChangedEventHandler(sub1.OnNumberChanged);
                pub.NumberChanged += new NumberChangedEventHandler(sub2.OnNumberChanged);
    
                pub.NumberChanged(3);
                Console.WriteLine("over");
            }
        }
    2.直接当成函数指针用
        class Program
        {
            public delegate void NumberChangedEventHandler(int number);
            class Publisher
            {
                public NumberChangedEventHandler NumberChanged;  
            }
            class Subscriber
            {
                public void OnNumberChanged(int number)
                {
                    string message = "New value is " + number;
                    Console.WriteLine(message);
                }
            }
            static void Main(string[] args)
            {
                Publisher pub = new Publisher();
                Subscriber sub1 = new Subscriber();
                pub.NumberChanged = sub1.OnNumberChanged;
                pub.NumberChanged(3);
            }
        }
    3.异步调用
        class Program
        {
            public delegate void NumberChangedEventHandler(int number);
            class Publisher
            {
                public NumberChangedEventHandler NumberChanged;  
            }
            class Subscriber
            {
                public void OnNumberChanged(int number)
                {
                    string message = "New value is " + number;
                    Console.WriteLine(message);
                }
            }
            static void Main(string[] args)
            {
                Publisher pub = new Publisher();
                Subscriber sub1 = new Subscriber();
                pub.NumberChanged += new NumberChangedEventHandler(sub1.OnNumberChanged);
                pub.NumberChanged.BeginInvoke(3, null, null);
            }
        }

    如果这篇文章对您有帮助,您可以打赏我

    技术交流QQ群:15129679

  • 相关阅读:
    MAVEN 配置阿里云源
    Windows10远程连接CentOS7(搭建Xrdp服务器)
    在jsp显示图片
    unbuntu自动任务定时重启
    eager模式与自定义训练
    JDK安装
    VMware克隆Linux虚拟机注意事项
    系统字符编码
    Iptables防火墙
    查看系统信息
  • 原文地址:https://www.cnblogs.com/yeminglong/p/2442595.html
Copyright © 2020-2023  润新知