Valeur de retour

Une méthode peut renvoyer des données au code appelant ; la valeur de retour remplace directement l’emplacement de l’expression d’appel.

Si une méthode doit retourner une donnée, vous devez indiquer un type de retour devant son nom. Utilisez void quand il n’y a pas de valeur renvoyée.

Vous pouvez utiliser return même sans valeur de retour, mais sans placer de valeur après le mot-clé. Écrivez simplement return ;. Cela stoppe l’exécution : les instructions suivantes ne s’exécutent pas et le flux retourne vers l’appelant.

    int Add(int a, int b)  // Renvoie une valeur de type int
    {
        return a + b;
    }Langage du code : JavaScript (javascript)
    void SayHi() // Aucune valeur de retour
    {
        Console.WriteLine("hello welcome to foxdevelop.com");
    }Langage du code : JavaScript (javascript)

1. Les méthodes avec valeur de retour doivent employer return expression;. Le type du résultat de l’expression doit correspondre au type déclaré pour le retour ;

    int Add(int a, int b)
    {
        return 1.2;  // Erreur. 1,2 est de type double, il ne peut pas être converti implicitement en int, d’où l’incompatibilité de types
    }Langage du code : JavaScript (javascript)

Cet extrait tente de renvoyer une valeur double. Le littéral 1.2 est par défaut un double, soit un nombre à virgule flottante. Le compilateur ne parvient pas à convertir automatiquement un nombre décimal en entier, ce qui provoque une erreur.

Observons le cas inverse

    double Add2()
    {
        return 10;  // 10 est un int, convertible implicitement en double, pas d’erreur
    }Langage du code : JavaScript (javascript)

Ici le code fonctionne sans erreur. Même si 10 est un entier, la conversion implicite vers double est autorisée, donc les types sont compatibles. Ne comparez pas uniquement les noms des types : vérifiez systématiquement si une conversion implicite est possible.

Une conversion implicite se produit quand vous n’écrivez pas manuellement de code de conversion ; le compilateur gère cette opération automatiquement. À l’inverse, les conversions écrites explicitement par le développeur sont appelées conversions explicites.

Nous étudierons les conversions de types plus tard dans ce cours.

2. Chaque chemin d’exécution au sein d’une méthode à valeur de retour doit finir par atteindre une instruction return. Aucun chemin ne peut se terminer sans renvoyer une valeur.

La méthode ci-dessus déclare un type int devant le nom Add, mais ne contient aucune instruction return dans son corps. Cela entraîne une erreur de compilation.

Cette formulation génère également une erreur. L’instruction return ne s’exécute que si la condition if est vraie. Lorsque a >= b, le code évite return, ce qui crée un chemin sans valeur renvoyée.

Même si vous ajoutez un bloc else, omettre return à l’intérieur produit le même défaut : des branches sans instruction return. Cette règle s’applique aux autres structures de contrôle. Assurez-vous de couvrir tous les chemins d’exécution.

Une solution existe : ajouter un return final à la fin de la méthode comme valeur de secours. Voici un exemple

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

        }
        return -1; // Quels que soient les chemins précédents, le code atteint cette ligne et renvoie une valeur
        // La valeur -1 agit comme solution de secours.
    }Langage du code : C# (cs)

Les valeurs de retour acceptent tous les types de données : types primitifs (int, string…), classes personnalisées, collections, etc. ;

L’instruction return interrompt immédiatement la méthode en cours ; les lignes suivantes ne s’exécutent pas ;

L’appel d’une méthode avec valeur de retour peut être inséré directement dans des expressions, des affichages, des affectations et d’autres contextes.

Valeur de retour

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *