gpt4 book ai didi

没有参数的 C# 事件。我该如何处理它们?

转载 作者:IT王子 更新时间:2023-10-29 04:32:13 26 4
gpt4 key购买 nike

我目前正在为游戏开发菜单系统,并且我有屏幕和屏幕元素的标准层次结构。 (屏幕包含一些屏幕元素的集合)。我希望屏幕元素向屏幕类发送事件以声明它已被选中。但是,在这种情况下我不需要任何事件参数。我不确定在没有任何参数的情况下创建事件的语法是什么。我找到了一个将播放器索引作为事件参数传递的解决方案。 (我的游戏是严格的单人游戏,所以这不是必需的。)

public event EventHandler<PlayerIndexEventArgs> Selected;

^-- 在 PlayerIndexEventArgs 继承自 EventArgs 的地方如何声明此事件。我可以省略 PlayerIndexEventArgs 吗,或者这里是否有一个默认类型用于不发送任何参数? (也许只是 EventArgs 基类?)

最佳答案

您可以使用 Action 委托(delegate)。这比使用您永远不需要的数据要优雅得多(我的意思是 EventArgs)。

在这里定义事件:

public event Action EventWithoutParams;
public event Action<int> EventWithIntParam;

在这里你触发事件:

EventWithoutParams();
EventWithIntParam(123);

您可以在 Action 找到您需要的所有信息或 Action<T> .

这些事件中的任何一个都可以使用空操作委托(delegate) ... = delegate { }; 进行初始化,这样您就无需在触发事件之前检查是否为 null。

关于没有参数的 C# 事件。我该如何处理它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1689279/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com