事件学习
主函数的代码:
代码
static void Main(string[] args)
{
Cat Tom = new Cat("Tom", 3);
Tom.CatCream += new Cat.CatCreamHandler((new Mouse()).RunAway);
Tom.CatCream += new Cat.CatCreamHandler((new Master()).Waken);
Tom.Cream(new CatCreamEventArgs(Tom.Name,Tom.Age));
}
猫:
代码
public class Cat
{
private string name;
private int age;
public string Name
{
get
{return this.name;}
set
{this.name = value;}
}
public int Age
{
get { return this.age; }
set { age = value; }
}
public Cat(string name, int age)
{
this.name = name;
this.age = age;
}
public delegate void CatCreamHandler(object sender, CatCreamEventArgs e);
public event CatCreamHandler CatCream;
public void Cream(CatCreamEventArgs e)
{
if (null != CatCream)
{ CatCream(this, e);//激活一个事件}
}
}
事件参数类:
代码
public class CatCreamEventArgs : EventArgs
{
public readonly string catName;
public readonly int catAge;
public CatCreamEventArgs(string name, int age)
{
catName = name;
catAge = age;
}
}
事件监听者,老师和人:
代码
public class Mouse
{
public void RunAway(object sender, CatCreamEventArgs e)
{
Console.Write("the {0} is come,run away", e.catName);
}
}
public class Master
{
public void Waken(object sender, CatCreamEventArgs e)
{
Console.Write("the {0} is cream ,wake up", e.catName);
}
}
1.事件使用总结
2.有一个受监视着,有一个或者都个监视着
3.受监视者需要定义委托,定义委托之后再定义一个包装该委托的事件
4.在监视者中声明当事件被触发时的方法,即事件需要注册的方法