//事件提供者,提供事件为其成员NUM的值改变。事件为静态事件NumChange
class EventExp
{
static private int num;
//public EventExp exp;
public delegate void NumChangeEventHandler(object sender, NumChangeEventArgs e,int i);
static public event NumChangeEventHandler NumChange;
static public int Num{get{ return EventExp.num; }set { EventExp.num = value; EventExp.NumberChanged(); } }
static public void NumberChanged()
{
if (EventExp.NumChange != null)
{
EventExp.NumChange(null, new NumChangeEventArgs(), EventExp.num);//此处本来是想传入EventExp类本身,但是不知道怎么传。
}
}
}
//定义的一个事件参数类型,继承自EventArgs
class NumChangeEventArgs : EventArgs
{
public DateTime dateTime { get { return DateTime.Now; } }
}
//事件的观察者,观察事件提供者的事件有无发生
class exp
{
public void hello(object sender, NumChangeEventArgs e, int i)
{
Console.WriteLine("我观察到EventExp{0}的Num值发生了变化,变化的时间是{1},改变后的值是:{2}",sender,e.dateTime,i);
}
}
exp e = new exp();
EventExp.NumChange += e.hello;
EventExp.Num = 10;
Console.ReadLine();