GD0203:信号的委托签名必须返回 void

规则 ID

GD0203

类别

用法

修复是破坏性的还是非破坏性的

破坏性的 - 如果返回类型发生改变

非破坏性的 - 如果 [Signal] 属性被移除

默认启用

原因

当使用 [Signal] 属性注解的委托期望为 [Signal] 时却具有返回类型。

规则说明

每个信号必须返回 void。每个信号可以注册多个回调,如果信号回调可以返回一些内容,则无法确定使用哪个返回值。

// This signal delegate is invalid because it doesn't return void.
public int InvalidSignalEventHandler();

// This signal delegate is valid because it returns void.
public void ValidSignalEventHandler();

查看 C# 信号文档以获取有关如何声明和使用信号的更多信息。

如何解决违规情况

要修复违反该规则的情况,请将委托更改为返回 void 或从委托中移除 [Signal] 属性。请注意,移除该属性将意味着该信号未被注册。

小技巧

如果信号不需要与 Godot 交互,请考虑直接使用 C# 事件。纯 C# 事件允许你使用任何 C# 类型作为其参数。

何时抑制警告

不要抑制该规则的警告。返回一些内容的信号委托将导致意外的运行时错误。