我应该使用事件通知课程还是仅使用返回?

And*_*eir 0 c# events event-handling

我今天对事件和代表们都很敏感,并且这样做,我一直在想着体验吧,那些来自游戏的进步栏.但我对解决问题的更好方法有疑问 - 它可能就像糟糕的设计一样简单.我来为您提供一些细节.

我用ExperienceBar类建模了我的想法.

它包含属性:

  • int StartValue
  • int CurrentValue
  • int EndValue

和方法

  • void UpdateBar(int)

UpdateBar将参数添加到CurrentValue,然后测试它是否已达到EndValue.如果超过金额,则EndValue会增加,金额会继续.请注意,最初在我的想法中,它并不关心达到可能的最大量的效果,只是结束值增加并且StartValue被重置为零.

另一个名为Player的类具有类ExperienceBar的属性.

在我的小演示中,当Player.ExperienceBar.UpdateBar(int)到达EndValue时,它会触发一个由Player类处理的事件.它将Player.Level属性更新为1.

我刚刚意识到只需将UpdateBar(int)更改为返回类型"true"即可实现相同的功能.此方法可以由Player类测试,当为true时,Player.Level增加1.

所以我的问题 - 这是处理这种特殊环境的最佳实践方法吗?作为这种情况的一般经验法则,处理事件是否更好,或者只是通过测试return语句来保持简单?

PS:我希望我尽可能清楚地表明这一点,但我可以尝试澄清是否有人遇到麻烦.我相信我的想法可能已经存在一些冗余,但请尽量不要偏离这个问题.我很清楚他们!谢谢 :)

Vic*_*tor 5

嗯......对我而言,事件是做到这一点的方法.

但是,如果我要设计应用程序,那将归结为一个问题:当到达EndValue时,ExperienceBars的事件是否会被调用UpdateBar的类以外的任何人使用.

如果你正在设计一个在很多地方使用的组件(这似乎是目标),我的答案似乎几乎肯定,所以我的回答是使用事件!

/胜利者