/*这个例子并不能直接运行
只是我为了好理解委托和事件的定义参照的*/
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++实现的例子
*/
委托与事件-1
猜你喜欢
转载自blog.csdn.net/qq_41903811/article/details/88366612
今日推荐
周排行