事件学习

 

主函数的代码:

代码
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.在监视者中声明当事件被触发时的方法,即事件需要注册的方法

posted @ 2011-01-17 17:13  雁北飞  阅读(152)  评论(0编辑  收藏  举报