Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

GD0203: The delegate signature of the signal must return void

Regel-ID

GD0203

Kategorie

Verwendung

Fix führt oder führt nicht zu Kompatibilitätsbruch

Kompatibilitätsbruch - Wenn der Rückgabetyp geändert wird

Kein Kompatibilitätsbruch - Wenn das Attribut [Signal] entfernt wird

Standardmäßig aktiviert

Ja

Ursache

Ein Delegate, der mit dem Attribut [Signal] annotiert ist, hat einen Rückgabetyp, obwohl void erwartet wurde.

Regelbeschreibung

Jedes Signal muss void zurückgeben. Es können mehrere Callbacks für jedes Signal registriert werden. Wenn Signal-Callbacks etwas zurückgeben könnten, wäre es nicht möglich zu bestimmen, welcher der zurückgegebenen Werte zu verwenden ist.

// 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();

Werfen Sie einen Blick in die C#-Signale-Dokumentation für weitere Informationen über die Deklaration und Verwendung von Signalen.

Wie man Verstöße behebt

Um einen Verstoß gegen diese Regel zu beheben, ändern Sie den Delegate so, dass er void zurückgibt oder entfernen Sie das [Signal]-Attribut aus dem Delegate. Beachten Sie, dass das Entfernen des Attributs dazu führt, dass das Signal nicht registriert wird.

Tipp

Wenn das Signal nicht mit Godot interagieren muss, sollten Sie erwägen, C#-Events <https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/events/>`_ direkt zu verwenden. Bei reinen C#-Events können Sie jeden C#-Typ als seine Parameter verwenden.

Wann man Warnungen unterdrücken sollte

Unterdrücken Sie nicht eine Warnung zu dieser Regel. Signal-Delegates, die etwas zurückgeben, führen zu unerwarteten Laufzeitfehlern.