Partage
  • Partager sur Facebook
  • Partager sur Twitter

Utilité d'un Return (C#)

    31 mars 2020 à 1:31:19

    Bonjour, je vois les returns partout et j'ai fait des recherches, mais les réponses que j'ai trouvé, aucune n'étaient vraiment claires pour moi. Du coup ça sert à quoi un return ? (à savoir que c'est très dur de me faire comprendre quelque chose et je prends beaucoup de temps à comprendre, maintenant vous êtes prévenus)

    -
    Edité par SwarRoth 31 mars 2020 à 1:35:19

    • Partager sur Facebook
    • Partager sur Twitter
      1 avril 2020 à 20:53:14

      Salut,
      Comme son nom l'indique c'est un mot-clef qui te permet de retourner une valeur dans une méthode (donc dans une fonction). Ca stoppe le déroulement des instructions de la dite méthode d'ailleurs.
      Par exemple tu as une méthode :
      public int Addition(int a, int b)
      {
           return a + b;
      }
      Cette méthode prend 2 nombres entiers en paramètre, et retourne un entier (public int Addition ==> la méthode est en accessibilité publique, et retourne un int). L'instruction return a + b; fait le calcul a+b et en retourne le résultat. Ainsi tu peux faire :
      int a = 1;
      int b = 2;
      int c = Addition (a, b);
      Console.WriteLine(c);
      Console.WriteLine(Addition(a, b));
      Ca affichera exactement le même résultat !
      Par contre ça ne marcherait pas avec la méthode suivante, qui ne retourne rien :
      public void Addition(int a, int b)
      {
           int c = a + b;
      }
      Et ceci ne sera même pas compilé car la valeur de retour doit être du type de retour de la méthode :
      public int Addition (int a, int b)
      {
           string c = (a + b).ToString();
           return c;
      }
      Si tu ne souhaites pas que ta méthode retourne une valeur, par exemple si elle exerce une action qui ne nécessite pas de retourner quoi que ce soit, tu utilises le type void ("vide") :
      public void Addition (int a, int b)
      {
           int c = a + b;
           Console.WriteLine(c);
      }
      Et comme je te le disais, un return "termine" la suite d'instructions sans tenir compte de celles écrites en-dessous, par exemple :
      public int Calcul(int a, int b)
      {
           if (a > b)
           {
                 return a - b;
            }
           return a + b;
      }
      Si a > b alors la valeur de retour est a - b et le reste n'est pas lu. Sinon, le reste est lu : on retourne a + b.
      Note que dans une méthode sans valeur de retour (type void), si tu veux interrompre l'instruction, tu peux utiliser return sans valeur derrière, comme ceci :
      public void Calcul(int a, int b)
      {
           if (a > b)
           {
                 Console.WriteLine(a - b);
                 return;
            }
           Console.WriteLine(a + b);
      }
      Est-ce que c'est plus clair ?
      • Partager sur Facebook
      • Partager sur Twitter
        1 avril 2020 à 23:44:10

        Effectivement c’est BEAUCOUP plus clair, et je t’en remercie beaucoup. Mais j’ai encore 2 questions :

        si je fais :

        public int Nom(int a, int b)

        {
        int a = 3;

        int b = 2;

        return a - b;

        }

        Dans la console cela n’affichera bien rien ?

        deuxieme question :

        Comment tu fais pour convertir le int en string comme dans ton exemple ? Exemple :

        public int Nom(int a, int b)

        {
        int a = 3;

        int b = 2;


        string c = (a + b).ToString();

        Console.WriteLine(c);

        }

        par exemple dans ce texte, qu’est qui va s’afficher dans la console ?

        • Partager sur Facebook
        • Partager sur Twitter
          2 avril 2020 à 10:00:36

          Hello, dans le cas de ta première question, non tant que tu ne writeline rien, ça ne sera pas affiché

          dans ton deuxième cas le ToString est bien utilisé, '5' s'affichera

          • Partager sur Facebook
          • Partager sur Twitter
            2 avril 2020 à 12:34:01

            D’accord, merci beaucoup pour vos réponses 😄 maid quand par exemple qlq demande "blabla retourne quoi ?" Ca fait reference à quoi ?
            • Partager sur Facebook
            • Partager sur Twitter
              2 avril 2020 à 13:11:03

              Dans ton premier cas non seulement ça n'affichera rien puisque la commande d'affichage n'est pas appelée (Console.WriteLine()). Par contre Console.WriteLine(Nom(3,2)); affichera "1".

              Sauf une erreur : ta méthode prend 2 paramètres de type int, a et b, mais tu les redéclares/redéfinis dans le corps de la méthode, ce qui n'est pas nécessaire et je ne suis d'ailleurs même pas sûr que ça compile (j'ai pas fait le test, mais en toute logique t'es variables a et b déclarées dans le corps de la méthode entrent en conflit avec les paramètres a et b qui portent le même nom et sont de même type).

              Pour ta dernière question, "machin retourne quoi ?", tout dépend du contexte de la question. Ca peut être "machin retourne quelle valeur ?" ou "machin retourne quel type ?". Dans le cas de l'exemple Addition(), on peut dire :

              - Addition() retourne un int

              - Addition(3, 2) retourne 5

              Mais dans les 2 cas la réponse c'est : quel est le résultat de l'instruction "return".

              • Partager sur Facebook
              • Partager sur Twitter
                2 avril 2020 à 14:51:34

                encore une fois merci de vos réponses 🙂 et par rapport a quand j’ai redéclaré int a et int b, c’est juste une erreur d’étourderie
                • Partager sur Facebook
                • Partager sur Twitter
                  4 avril 2020 à 23:28:37

                  Bonjour, et excusez-moi d'apparaître autant de temps après le premier post.

                  Attention, ce post n'est qu'une explication historique du mot-clé return. Pas un point technique.

                  En fait, comparé à ce que les gens disent, le mot return ne veut pas dire que l'on souhaite retourner une valeur. Son sens a changé au fil des années, et s'est beaucoup séparé de son sens original. 

                  Dans les programmes en langage assembleur, l'instruction "ret", diminutif de "return" est utilisée pour faire revenir / RETOURNER le pointeur d'instruction à la ligne après l'appel d'une fonction. On comprend, grâce à cela pourquoi le fil de la fonction s'arrête à ce point... logique, si l'on retourne sur un autre morceau de code, les instructions qui suivent "ret" ne seront pas exécutées. "return" a été adapté de façon à initialiser un registre sur une certaine valeur qui sera utilisée par la suite du programme, et à retourner à l'endroit d'appel.

                  Un petit exemple:

                  public static int Return10() {
                      return 10;
                      // on initialise le registre AX à 10.
                      // On RETOURNE à l'endroit ou la fonction a été appelée.
                  }
                  
                  public static void Main(string[] args)  {
                      int myVar = Return10();
                      // myVar possède le contenu du registre AX, initialisé 
                      // dans la fonction.
                  }


                  Voilà !

                  • Partager sur Facebook
                  • Partager sur Twitter
                    5 avril 2020 à 9:22:45

                    Ah j'ignorais et c'est très intéressant, merci !
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Utilité d'un Return (C#)

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown