GD0203: Делегат сигнала должен возвращать void
Идентификатор правила |
GD0203 |
Категория |
Использование |
Исправление может быть как ломающим, так и не ломающим |
Нарушение - если тип возвращаемого значения изменен Неразрывный — если атрибут |
Включено по умолчанию |
Да |
Причина
Делегат, аннотированный атрибутом [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# для их параметров.
Когда следует подавлять предупреждения
Не подавляйте предупреждение из этого правила. Делегаты сигналов, возвращающие что-либо, приведут к непредвиденным ошибкам во время выполнения.