C#事件

来源:互联网 发布:苏州爱知科技福利待遇 编辑:程序博客网 时间:2024/06/08 16:36
 /// <summary>    /// 自定义类派    /// </summary>    class IncrementerEventArgs : EventArgs    {        public int IterationCount { get; set; }    }    /// <summary>    /// 发布者    /// </summary>    class Incrementer    {        //使用自定义类的泛型委托,也可以声明static静态的        //CountedADozen事件名称        public event EventHandler<IncrementerEventArgs> CountedADozen;        public void DoCount()        {            //自定义类对象            IncrementerEventArgs args = new IncrementerEventArgs();            for (int i = 1; i < 100; i++)            {                if (i % 12 == 0 && CountedADozen != null)                {                    args.IterationCount = i;                    //触发事件时使用EventHandler的参数                    CountedADozen(this, args);                }            }        }    }    /// <summary>    /// 订阅者    /// </summary>    class Dozens    {        public int DozensCount { get; private set; }        public Dozens(Incrementer incrementer)        {            DozensCount = 0;            //订阅事件            incrementer.CountedADozen += IncrementerDozensCount;        }        //事件处理程序,        /*        不管参数使用的实际类型是什么,object类和EventArgs总是基类,这样evenethandler就能提供一个对所有事件和事件处理器的通用签名,只允许有两个参数,而不是各自都有不同的签名        */        private void IncrementerDozensCount(object sender, EventArgs e)        {            DozensCount++;        }    }    class Program    {        static void Main(string[] args)        {            Incrementer inc = new Incrementer();            Dozens doz = new Dozens(inc);            inc.DoCount();            Console.WriteLine(doz.DozensCount);            Console.ReadKey();        }    }
原创粉丝点击