码迷,mamicode.com
首页 > 其他好文 > 详细

委托与事件

时间:2014-12-24 11:15:14      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

定义委托

public delegate void NumberChangeEventHandler(int count);

  

定义事件发布者

public class Publisher
    {
        private int count;
        public NumberChangeEventHandler NumberChanged;

       // public event NumberChangeEventHandler NumberChanged;
        public void DoSomething()
        {
            if (NumberChanged != null)
            {
                count++;
                NumberChanged(count);
            }
        }
    }

  

定义事件订阅者

public class Subscriber
    {
        public void OnNumberChanged(int count)
        {
            Console.WriteLine("Subscriber notified:count={0}", count);
        }
    }

  

  class Program
    {
        static void Main(string[] args)
        {
            Publisher pub = new Publisher();
            Subscriber sub = new Subscriber();
            //pub.NumberChanged += new NumberChangeEventHandler(sub.OnNumberChanged);
            pub.NumberChanged += sub.OnNumberChanged;
            pub.DoSomething();
            pub.NumberChanged(100);
         
        }
    }

  

  上面代码定义了一个NumberChangedEventHandler委托,然后创建了事件的发布者Publisher和订阅者Subscriber。当使用委托变量时,客户端可以直接通过委托变量触发事件--->pub.NumberChanged(100),这将会影响所有注册了该委托的订阅者。

解决:将声明委托变量代码注释,取消注释下一行 的事件,这时候,直接调用pub.NumberChanged(100)是被禁止的。实现了对委托变量的封装

委托与事件

标签:

原文地址:http://www.cnblogs.com/Sunlimi/p/4181699.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!