using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;namespace ConsoleApplication1
{
    //事件的类,初始化,继承了EventArgs类
    #region
    class MyChangeEventArgs:EventArgs
    {
        string sku;
        int change;
        public MyChangeEventArgs(string sku, int change)
        {
            this.sku = sku;
            this.change = change;
            Console.WriteLine("现在开始初始化事件类");
        }        public string Sku
        {
            get
            {
                return sku;
            }
            set
            {
                sku = value;
            }
        }        public int Change
        {
            get
            {
                return change;
            }
            set
            {
                change = value;
            }
        }
    }
    #endregion
    //class end 
    //
    class MyManager  //发布器
    {
        public delegate void MyChangeEventHandler(object sender, MyChangeEventArgs e);        public event MyChangeEventHandler OnMyChangeHandler;
        public void UpdateMy(string sku, int change)
        {
            if (change == 0)
                return;
            MyChangeEventArgs e = new MyChangeEventArgs(sku, change);
            if (OnMyChangeHandler != null)
                OnMyChangeHandler(this, e);            Console.WriteLine("更新成功");
        }
    }    class MyWatcher  //签署器
    {
        
        public MyWatcher(MyManager myManager)
        {
            this.myManager = myManager;
            myManager.OnMyChangeHandler += new MyManager.MyChangeEventHandler(OnMyChange);
            Console.WriteLine("布线成功");        }
         
                void OnMyChange(object sender,MyChangeEventArgs e)
        {
            int change=e.Change;
            Console.WriteLine("Part'{0} was {1} by {2} units",e.Sku,change>0?"increase":"decreased",Math.Abs(e.Change));
        }
        MyManager myManager;
    }
    class EventApp1
    {
        public static void Main(string[] args)
        {
            MyManager myManager = new MyManager();
            Console.WriteLine("创建了一个MyManager类");            MyWatcher myWatch = new MyWatcher(myManager);
            Console.WriteLine("创建了一个MyWatcher类");            myManager.UpdateMy("102 009 501", -2);            myManager.UpdateMy("102 009 501", 5);
            Console.ReadLine();
        }
    }
            
} 请问以下几句的意思:
public delegate void MyChangeEventHandler(object sender, MyChangeEventArgs e);        public event MyChangeEventHandler OnMyChangeHandler;
 MyChangeEventArgs e = new MyChangeEventArgs(sku, change);
            if (OnMyChangeHandler != null)
                OnMyChangeHandler(this, e);
 void OnMyChange(object sender,MyChangeEventArgs e)

解决方案 »

  1.   

    c# & asp.net讨论群:32095860  欢迎有开发经验的朋友加入
      

  2.   

    第一行 定义了一个委托类型——这是个类型
    第二行 用这个委托类型定义了一个事件委托——将类型实例化
    第三行 定义了一个事件参数——
    第四行 如果成功获取非空的委托,则执行OnMyChangeHandler事件
    第五行 事件OnMyChange的定义
      

  3.   

    你看不懂的可能主要是最后三句,其实应该注意的是这一句
     myManager.OnMyChangeHandler += new MyManager.MyChangeEventHandler(OnMyChange);OnMyChangeHandler 又连接到了OnMyChange事件因为这两个事件同是MyChangeEventHandler这个委托类型的,所以可以用+=号直接挂接起来。