Rückgabewert

Eine Methode kann Daten an den aufrufenden Code zurückgeben. Der Rückgabewert ersetzt direkt die Stelle des Aufrufausdrucks.

Soll eine Methode Daten liefern, muss vor dem Methodennamen der Rückgabetyp angegeben werden. Ist kein Rückgabewert vorgesehen, verwenden Sie void.

Auch Methoden ohne Rückgabewert dürfen return nutzen, allerdings ohne Wert dahinter. Schreiben Sie einfach return;. Das beendet die Ausführung, nachfolgender Code läuft nicht weiter und die Steuerung kehrt zum Aufrufer zurück.

    int Add(int a, int b)  // Gibt einen Wert vom Typ int zurück
    {
        return a + b;
    }Code-Sprache: JavaScript (javascript)
    void SayHi() // Kein Rückgabewert
    {
        Console.WriteLine("hello welcome to foxdevelop.com");
    }Code-Sprache: JavaScript (javascript)

1. Methoden mit Rückgabewert benötigen zwingend return Ausdruck;. Der Ergebnistyp des Ausdrucks muss zum deklarierten Rückgabetyp passen;

    int Add(int a, int b)
    {
        return 1.2;  // Fehler. 1.2 ist vom Typ double und lässt sich nicht implizit nach int umwandeln, Typen passen nicht
    }Code-Sprache: JavaScript (javascript)

Dieser Code versucht einen double-Wert zurückzugeben. Das Literal 1.2 ist standardmäßig double, also eine Gleitkommazahl. Der Compiler kann Dezimalzahlen nicht automatisch in Ganzzahlen umwandeln, daher entsteht ein Fehler.

Sehen wir uns den umgekehrten Fall an

    double Add2()
    {
        return 10;  // 10 ist int, lässt sich implizit nach double umwandeln, kein Fehler
    }

Dieser Code läuft fehlerfrei. Obwohl 10 ein ganzzahliger Literalwert ist, ist die implizite Umwandlung nach double erlaubt, die Typen sind kompatibel. Vergleichen Sie nicht nur die Typbezeichnungen, sondern prüfen Sie immer auf mögliche implizite Umwandlungen.

Bei einer impliziten Umwandlung schreiben Sie keinen expliziten Umwandlungscode – der Compiler übernimmt die Typumwandlung automatisch. Dagegen nennt man Umwandlungen, die Sie als Entwickler manuell notieren, explizite Umwandlungen.

Mehr zur Typumwandlung lernen wir zu einem späteren Zeitpunkt.

2. Jeder mögliche Ausführungspfad innerhalb einer Methode mit Rückgabewert muss schließlich eine Anweisung return erreichen. Es darf keinen Pfad geben, der ohne Rückgabe endet.

Die obige Methode deklariert vor dem Namen Add den Typ int, enthält aber im Methodenrumpf keine return-Anweisung. Das führt ebenfalls zu einem Kompilierfehler.

Diese Schreibweise erzeugt ebenfalls einen Fehler. return läuft nur, wenn die if-Bedingung wahr ist. Tritt der Fall a >= b ein, wird return übersprungen – es gibt einen Pfad ohne Rückgabe.

Auch wenn Sie einen else-Block ergänzen, fehlt darin weiterhin return, bleibt das gleiche Problem erhalten: Pfade ohne Rückgabe. Diese Regel gilt für alle weiteren Steueranweisungen. Sorgen Sie dafür, dass alle Ausführungswege sauber abgedeckt sind.

Es gibt eine praktische Lösung: Setzen Sie am Methodenende eine return-Anweisung als Ausweichlösung. Beispiel:

    int Add(int a, int b)
    {
        if (a < b)
        {
            return a + b;
        }
        else
        {

        }
        return -1; // Egal welche Zweige zuvor ausgeführt wurden – bei Erreichen dieser Zeile wird ein Wert geliefert
        // Der Wert -1 dient als Fallback.
    }

Rückgabewerte unterstützen alle Datentypen: Grundtypen (int, string usw.), selbst definierte Klassen, Auflistungen und mehr;

Mit return wird die aktuelle Methode sofort beendet, nachfolgender Code wird nicht ausgeführt;

Aufrufe von Methoden mit Rückgabewert lassen sich direkt in Ausdrücken, Ausgaben, Zuweisungen und weiteren Szenarien verwenden.

Rückgabewert

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert