CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C#] Problème de méthodes surchargées

Chajoo
Chajoo
Niveau 11
10 mars 2021 à 15:50:26

Bonjour.

Dans ce tuto sur openclassroom https://openclassrooms.com/fr/courses/218202-apprenez-a-programmer-en-c-sur-net/216676-les-methodes
il est dit que l'on peut créer plusieurs méthodes avec le même nom tant que celles ci ont des nombres ou type de variable différentes en paramètre.

J'ai voulu tester par moi même mais j'obtient cette erreur :
Une variable ou une fonction locale nommée 'SayHello' est déjà définie dans cette portée

Le code :


using System;

namespace test1
{
    class Program
    {
        static void Main(string[] args)
        {
                 string name = "john";

                 SayHello(name);
                 // SayHello(); 
                 // j'ai mis en commentaire sinon il m'explique que
                 // il attend pour cette méthode un paramètre string

                 void SayHello(string name)
                 {
                      Console.WriteLine("Hello " + name + "!");
                 }

                 void SayHello() // <---- erreur ici
                {
                     Console.WriteLine("Hello!");
                }
         }
    }
}

Visual studio me dit que c'est la méthode SayHello() existe déjà mais c'est censé être le principe de la surcharge non ? :question:
J'utilise des paramètres différents donc je vois pas ou est le problème.

Merci par avance à ceux qui prendront le temps de regarder ce problème.

Message édité le 10 mars 2021 à 15:53:47 par Chajoo
ethyl-acetate
ethyl-acetate
Niveau 10
10 mars 2021 à 15:57:47

J'ai jamais fait de c# mais on peut vraiment créer une méthode nested comme ça dans une methode static ? Ce que tu veux faire ça ressemble pas plutot à un truc du genre :

using System;

namespace test1
{
    class Program
    {

        static void SayHello() {
            Console.WriteLine("Hello!");
        }

        static void SayHello(string name) {
            Console.WriteLine("Hello " + name + "!");
        }

        

        static void Main(string[] args)
        {
                 string name = "john";

                SayHello();
                SayHello(name);
         }
    }
}
ethyl-acetate
ethyl-acetate
Niveau 10
10 mars 2021 à 16:05:20

Parce qu'on parle bien là de surcharge de méthode et pas de fonction

Message édité le 10 mars 2021 à 16:05:30 par ethyl-acetate
Chajoo
Chajoo
Niveau 11
10 mars 2021 à 16:06:08

Le 10 mars 2021 à 15:57:47 ethyl-acetate a écrit :
J'ai jamais fait de c# mais on peut vraiment créer une méthode nested comme ça dans une methode static ? Ce que tu veux faire ça ressemble pas plutot à un truc du genre :

using System;

namespace test1
{
    class Program
    {

        static void SayHello() {
            Console.WriteLine("Hello!");
        }

        static void SayHello(string name) {
            Console.WriteLine("Hello " + name + "!");
        }

        

        static void Main(string[] args)
        {
                 string name = "john";

                SayHello();
                SayHello(name);
         }
    }
}

ça fonctionne merci beaucoup !

Par contre dans le tuto de openclassroom (la ou j'en suis en tout cas) à aucun moment il est dit que on ne peut pas faire de surcharge au sein de la même classe ça aurait été bien qu'il le précise :(

Enfin c'est bon à savoir pour la suite :fier:

Chajoo
Chajoo
Niveau 11
10 mars 2021 à 16:08:14

Le 10 mars 2021 à 16:05:20 ethyl-acetate a écrit :
Parce qu'on parle bien là de surcharge de méthode et pas de fonction

Dans le tuto il sous entend que en C# "méthode" est un mot différent pour désigner la fonction dans les autres langages :question:

ethyl-acetate
ethyl-acetate
Niveau 10
10 mars 2021 à 16:11:52

Le 10 mars 2021 à 16:08:14 Chajoo a écrit :

Le 10 mars 2021 à 16:05:20 ethyl-acetate a écrit :
Parce qu'on parle bien là de surcharge de méthode et pas de fonction

Dans le tuto il sous entend que en C# "méthode" est un mot différent pour désigner la fonction dans les autres langages :question:

Non ça n'a rien à voir. Une méthode c'est une "fonction" attachée à un objet en quelque sorte. Ce que tu faisais dans ton post initial c'est déclarer deux fonctions "SayHello" imbriquées dans une méthode Main.

Vraiment pas ouf ces tutoriels.

ethyl-acetate
ethyl-acetate
Niveau 10
10 mars 2021 à 16:13:06

Le 10 mars 2021 à 16:06:08 Chajoo a écrit :

Le 10 mars 2021 à 15:57:47 ethyl-acetate a écrit :
J'ai jamais fait de c# mais on peut vraiment créer une méthode nested comme ça dans une methode static ? Ce que tu veux faire ça ressemble pas plutot à un truc du genre :

using System;

namespace test1
{
    class Program
    {

        static void SayHello() {
            Console.WriteLine("Hello!");
        }

        static void SayHello(string name) {
            Console.WriteLine("Hello " + name + "!");
        }

        

        static void Main(string[] args)
        {
                 string name = "john";

                SayHello();
                SayHello(name);
         }
    }
}

ça fonctionne merci beaucoup !

Par contre dans le tuto de openclassroom (la ou j'en suis en tout cas) à aucun moment il est dit que on ne peut pas faire de surcharge au sein de la même classe ça aurait été bien qu'il le précise :(

Enfin c'est bon à savoir pour la suite :fier:

Bah si justement, tu fais une surcharge de methode dans ta classe Program. C'est les fonctions qui ne peuvent pas être surchargées visiblement.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment