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

  • 相关阅读:
    1104
    HDU 1575
    hdu 1142(DFS+dijkstra)
    hdu 1015(DFS)
    hdu 1342(DFS)
    hdu 1181(DFS)变 形 课
    hdu 1312(DFS)
    hdu 5976 Detachment
    hdu 5795
    UVa 11729
  • 原文地址:https://www.cnblogs.com/yeminglong/p/2442595.html
Copyright © 2011-2022 走看看