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

  • 相关阅读:
    SQL中如何用一个表的列更新另一个表的列?
    ASPxGridView利用CheckBox实现全选
    DevExpress.NETv8.1(Web Controls)学习笔记
    ALSA vs OSS
    video telephone
    uClinux系统分析 转
    Using KVM On Ubuntu 7.10 (Gutsy Gibbon)转
    想买开发板,我真的需要么?
    uClinux的内存管理转
    各种开源软件授权方式的选择 (zt)
  • 原文地址:https://www.cnblogs.com/yeminglong/p/2442595.html
Copyright © 2011-2022 走看看