GD0203: Делегат сигнала должен возвращать void

Идентификатор правила

GD0203

Категория

Использование

Исправление может быть как ломающим, так и не ломающим

Нарушение - если тип возвращаемого значения изменен

Неразрывный — если атрибут [Signal] удален

Включено по умолчанию

Да

Причина

Делегат, аннотированный атрибутом [Signal], имеет возвращаемый тип, хотя ожидался void.

Описание правила

Каждый сигнал должен возвращать 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# signals.

Как устранить нарушения

Чтобы исправить нарушение этого правила, измените делегат так, чтобы он возвращал void, или удалите атрибут [Signal] из делегата. Обратите внимание, что удаление атрибута приведёт к тому, что сигнал не будет зарегистрирован.

Совет

Если сигнал не нуждается во взаимодействии с Godot, рассмотрите возможность использования непосредственно событий C#. Чистые события C# позволяют использовать любой тип C# для их параметров.

Когда следует подавлять предупреждения

Не подавляйте предупреждение из этого правила. Делегаты сигналов, возвращающие что-либо, приведут к непредвиденным ошибкам во время выполнения.