IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Erreur création appel de methode. [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Manche (Basse Normandie)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 24
    Par défaut Erreur création appel de methode.
    bonjour, je débute le C#.
    et je commence "les méthodes".

    je vous expose mon problème en code, ce sera mieux qu'un long discours.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    namespace ConsoleApplication3
    {
           class Program
             {
     
            int Multiply(int x, int y)
            {
                return x*y;
            }
     
     
    static void Main(string[] args)
            {
                int number1 = 3;
                int number2 = 2;
                int number3 = Multiply(number1, number2);
                Console.WriteLine(number3);
            }
     
        }
    }
    Message d'erreur:
    Error 1 An object reference is required for the non-static field, method, or property 'ConsoleApplication3.Program.Multiply(int, int)'
    si vous pouviez prendre le temps de m'expliquer mon erreur ce serait parfait

    après plusieurs test j'obtiens ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    namespace ConsoleApplication3
    {
        class Program
        {
            int Multiply(int x, int y)
            {
                return x * y;
     
            }
            int methode_test()
            {
                int Number1 = (3);
                int Number2 = (2);
                int Number3 = Multiply(Number1, Number2);
                return Number3;
     
            }
     
            static void Main(string[] args)
            {
                Console.WriteLine(Number3);
                Console.Read();
            }
        }
    }
    Message d'erreur:
    ERROR 1 The name 'Number3' does not exist in the current context
    il semblerait que j'ai résolus mon premier problème; mais que par la suite je n'arrive pas à récupérer ( Number3)

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Manche (Basse Normandie)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 24
    Par défaut
    après plusieurs test j'obtiens ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    namespace ConsoleApplication3
    {
        class Program
        {
           
    
     int Multiply(int x, int y)
            {
                return x * y;
            }
    
    
    
            int methode_test()
            {
                int Number1 = (3);
                int Number2 = (2);
                int Number3 = Multiply(Number1, Number2);
                return Number3;
                }
    
    
            
            static void Main(string[] args)
            {
                Console.WriteLine(Number3);
                Console.Read();
            }
        }
    }
    Message d'erreur:
    ERROR 1 The name 'Number3' does not exist in the current context
    il semblerait que j'ai résolus mon premier problème; mais que par la suite je n'arrive pas à récupérer ( Number3)

  3. #3
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Number 3 est local à methode_test, tu ne peux l'appeler que là.

    si tu veux le résultat :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Console.WriteLine(methode_test());

  4. #4
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : autre
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    Il faut que ta méthode Multiply soit static pour que tu puisses l'appeler depuis le Main.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static int Multiply(int x, int y)

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Manche (Basse Normandie)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 24
    Par défaut
    Ok, merci.

    Je vais tester les deux techniques pour les enregistrer dans un coin de ma tête.

    Sinon que signifie exactement static
    Permet il seulement de pouvoir faire appelle à une méthode dans Main.
    Et si ce n'est pas le cas, pourquoi l'utilise t'on.

  6. #6
    Membre confirmé
    Femme Profil pro
    Etudiante en Développement
    Inscrit en
    Avril 2012
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiante en Développement
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 106
    Par défaut
    le mot clé "static" permet de définir une méthode ou une variable qui sera rattachée à la classe elle-même plutôt qu'à un objet.
    Cela veut dire que tu pourras faire appel à cette méthode sans avoir à créer un objet d'abord, juste avec le nom de la classe

    Dans le cas d'une application Console, le Main a été déclaré en static afin que le programme puisse démarrer sans instancier d'objet (sinon comment le programme pourrait se lancer ?).
    Une méthode non static est forcément liée à un objet, à une instance de la classe.

    Si ta méthode static appelles d'autres méthodes, celles-ci doivent être static également (sinon comment faire pour les appeler puisqu'aucun objet n'a été utilisé ?)

    Petit exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class Test
    {
        public static void MaMethodeStatic()
        {
            // Peu importe le contenu
        }
     
        public void MaMethode()
        {
            // Peu importe le contenu
        }
    }
    MaMethodeStatic est rattaché à la classe, cela veut dire que je peux l'appeler en passant directement par le nom de la classe, comme ceci : Test.MaMethodeStatic()
    Par contre, tu remarqueras que je ne vois pas la méthode "MaMethode" à partir de Test.
    Pour appeler MaMethode, je dois d'abord crée un objet Test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Test obj1 = new Test();
    obj1.MaMethode();
    Voici le lien de la MSDN au sujet du mot clé static

  7. #7
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2008
    Messages : 231
    Par défaut
    Il faut que tu lises des cours sur la programmation orienté objet, voici un lien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur appelle de methode [Silverlight + Sharepoint 2010]
    Par LordofKalbut dans le forum Silverlight
    Réponses: 15
    Dernier message: 21/03/2011, 09h40
  2. Réponses: 11
    Dernier message: 16/10/2005, 20h21
  3. [Compilateur] appel de méthodes avec signature similaire
    Par Monkeyget dans le forum Général Java
    Réponses: 4
    Dernier message: 30/03/2005, 20h14
  4. [Firebird - D7] Erreur - Création dynamique d'une base
    Par EGI dans le forum Bases de données
    Réponses: 5
    Dernier message: 29/03/2005, 14h26
  5. FOXPRO 2.6 : erreur créations du /des fichiers CAB
    Par breihtiti dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 16/11/2002, 11h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo