委托与事件-1

/*这个例子并不能直接运行
只是我为了好理解委托和事件的定义参照的*/
class Cat
{
	private string name;
	public Cat(string name)
	{
		this.name=name;
	}
	public delegate void CatShoutEventHandler();//声明委托
	public event CatShoutEventHandler CatShout;//事声明事件CatShout,它的类型是委托CatShoutEventHandler

	public void Shout()
	{
		cout<<name<<":miao";
		if(CatShout!=NULL)//表明当执行Shout()方法时,如果有对象登记事件,则执行CatShout()
			CatShout();
	}
};

class Mouse
{
	private string name;
	public Mouse(string name)
	{
		this.name=name;
	}
	public void Run()
	{
		cout<<"cat,run"<<endl;
	}
};

void main(string[] args)
{
	Cat cat=new cat("Tom");
	Mouse mouse1=new Mouse("Jerry");
	Mouse mouse2=new Mouse("Jack");

	/*
	将Mouse的Run方法通过实例化委托Cat.CatShoutEventHandler登记到
	Cat的事件CatShout当中;
	*/
	cat.CatShout+=new Cat.CatShoutEventHandler(mouse1.Run);
	cat.CatShout+=new Cat.CatShoutEventHandler(mouse2.Run);
	cat.Shout();
}

/*
	个人理解,在这个例子中,要实现的效果是cat一叫,两只老鼠就跑
	于是在cat这个例子中声明了一个委托,和一个事件;在猫叫函数被执行时,
	启动事件,事件就是两只老鼠跑,两只老鼠跑的函数在主函数中被注册到委托中
	有点绕,这是看到的c#来说明的一个例子,感觉也就这个例子解释点明白点,后面会添加c++实现的例子
*/

猜你喜欢

转载自blog.csdn.net/qq_41903811/article/details/88366612