日期:2014-05-19  浏览次数:20797 次

什么是事件?
这几天在学C#,主要就是看MSDN,事件的用法已经会了,可事件的机制总是看不明白,劳烦大家帮我解释一下下面这个事件是如何定义、触发的,每行代码背后的含义是什么,谢谢!


namespace   TestCollections
{
        //   A   delegate   type   for   hooking   up   change   notifications.
        public   delegate   void   ChangedEventHandler(object   sender,   System.EventArgs   e);

        //   A   class   that   works   just   like   ArrayList,   but   sends   event
        //   notifications   whenever   the   list   changes.
        public   class   ListWithChangedEvent   :   System.Collections.ArrayList
        {
                //   An   event   that   clients   can   use   to   be   notified   whenever   the
                //   elements   of   the   list   change.
                public   event   ChangedEventHandler   Changed;

                //   Invoke   the   Changed   event;   called   whenever   list   changes
                protected   virtual   void   OnChanged(System.EventArgs   e)
                {
                        if   (Changed   !=   null)
                        {
                                Changed(this,   e);
                        }
                }

                //   Override   some   of   the   methods   that   can   change   the   list;
                //   invoke   event   after   each
                public   override   int   Add(object   value)
                {
                        int   i   =   base.Add(value);
                        OnChanged(System.EventArgs.Empty);
                        return   i;
                }

                public   override   void   Clear()
                {
                        base.Clear();
                        OnChanged(System.EventArgs.Empty);
                }