问题描述
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespace自定义事件{classEventDispatcher{publicdelegatevoidEventHander(Eventev);publiceventEventHandereventHander;publicvoidDispatch(Eventev){if(eventHander!=null)eventHander(ev);}}classEvent:EventArgs{publicstringmessage;publicEvent(stringmessage){this.message=message;}}classSprite:EventDispatcher{publicvoidaddEventListener(EventHanderhander){eventHander+=newEventHander(hander);}}classProgram{staticvoidMain(string[]args){Spritesprite=newSprite();sprite.addEventListener(Receiver);sprite.addEventListener(Hander);sprite.eventHander+=sprite_eventHander;Console.ReadKey();sprite.Dispatch(newEvent("我发送了一个消息"));Console.ReadLine();Console.ReadKey();}staticvoidsprite_eventHander(Eventev){Console.WriteLine("sprite_eventHander收到消息"+ev.message);}privatestaticvoidHander(Eventev){Console.WriteLine("Hander收到消息"+ev.message);}privatestaticvoidReceiver(Eventev){Console.WriteLine("Receiver收到消息:"+ev.message);}}}
解决方案
解决方案二:
写一堆代码,你解释一下想说明什么啊?代码不要抄过70%。一个程序员中重要地是设计,而不是会打字。
解决方案三:
引用1楼sp1234的回复:
写一堆代码,你解释一下想说明什么啊?代码不要抄过70%。一个程序员中重要地是设计,而不是会打字。
我是想问下我这样写有什么问题吗?这是我理解的不知道写的对吗?我是新手求指点
解决方案四:
程序有不同的写法。例如classEvent:EventArgs{publicstringmessage;publicEvent(stringmessage){this.message=message;}}classSprite{publiceventAction<Event>eventHander;publicvoid干(Evente){if(eventHander!=null)eventHander(e);}}classProgram{staticvoidMain(string[]args){Spritesprite=newSprite();sprite.eventHander+=Receiver;sprite.eventHander+=Hander;sprite.eventHander+=sprite_eventHander;sprite.eventHander+=e=>Console.WriteLine("我没有收到-->{0}",e.message);Console.ReadKey();sprite.干(newEvent("我发送了一个消息"));Console.ReadLine();Console.ReadKey();}staticvoidsprite_eventHander(Eventev){Console.WriteLine("sprite_eventHander收到消息"+ev.message);}privatestaticvoidHander(Eventev){Console.WriteLine("Hander收到消息"+ev.message);}privatestaticvoidReceiver(Eventev){Console.WriteLine("Receiver收到消息:"+ev.message);}
编程越简单越好、越少声明类型(接口)越好。当然是恰当合适、达到目的的情况下,不能过分。至于说你从事件这种形式中学到了什么应用原则,还差得比较多。你就好像一个学花拳绣腿当体操来学习拳击,还不知道在比赛场地上如何保存实力击倒对手。
解决方案五:
事件主要是三部曲:第一,注册(或称为:发布、声明);第二,触发(或称为:回调);第三,绑定(或称为:订阅);
解决方案六:
至少得把理解的东西,用文字表述吧