zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    iPhone将NSString转换编码集为gb2312或者gbk的方法
    iOS下微信语音播放之切换听筒和扬声器的方法解决方案
    苹果开发者各地区联系电话
    iOS开发中,应用内直接跳转到Appstore
    高亮显示UILabel中的子串
    UML
    All Classic Bluetooth profile for iPhone
    智能穿戴设备移动APP端与外设数据传输协议功能模块CMD&ACK表
    Mac 使用技巧分享
    git branch管理小结
  • 原文地址:https://www.cnblogs.com/yeminglong/p/2442595.html
Copyright © 2011-2022 走看看