我目前正在开发一个游戏菜单系统,我有屏幕和屏幕元素的标准层次结构.(屏幕包含一些屏幕元素集合).我希望屏幕元素将事件发送到屏幕类以声明它已被选中.但是,在这种情况下我不需要任何事件参数.我不确定在没有任何参数的情况下创建事件的语法是什么.我找到了一个将播放器索引作为事件参数传递的解决方案.(我的游戏严格来说是单人游戏,所以这不是必需的.)
public event EventHandler<PlayerIndexEventArgs> Selected;
Run Code Online (Sandbox Code Playgroud)
^ - 如何在EventIndexEventArgs从EventArgs继承的地方声明此事件.我可以省略PlayerIndexEventArgs,还是有默认类型在这里使用不发送参数?(也许只是EventArgs基类?)
Dmi*_*nov 52
您可以使用Action委托.这比使用您永远不需要的数据(我的意思是EventArgs)要优雅得多.
在这里定义事件:
public event Action EventWithoutParams;
public event Action<int> EventWithIntParam;
Run Code Online (Sandbox Code Playgroud)
在这里你发射事件:
EventWithoutParams();
EventWithIntParam(123);
Run Code Online (Sandbox Code Playgroud)
您可以在Action或Action <T>中找到所需的所有信息.
可以使用no-op委托初始化这些事件中的任何一个,... = delegate { };以便在触发事件之前不需要检查null.
Qui*_*son 11
尝试:
public event EventHandler Selected;
Run Code Online (Sandbox Code Playgroud)
然后打电话..
Selected(null, EventArgs.Empty);
Run Code Online (Sandbox Code Playgroud)
这样它就是默认的事件定义,如果你不想要,你不需要传递任何信息.
| 归档时间: |
|
| 查看次数: |
16953 次 |
| 最近记录: |