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 :

Surcharge du nombre d'arguments d'une classe


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2021
    Messages : 10
    Par défaut Surcharge du nombre d'arguments d'une classe
    Bonjour,
    J'ai actuellement un classe comportant 7 arguments.
    J'affiche cette classe dans plusieurs DatGridView. Une fois toute la classe, puis une autre la classe avec des restrictions (quantité inférieur à 10).
    Dans un troisième DataGridView je souhaite afficher cette classe avec 3 arguments supplémentaire. Ces trois arguments font appelles aux propriétés d'une classe (pour effectuer des calculs).

    Voici mon message d'erreur actuel :
    CS1501 Aucune surcharge pour la méthode 'Add' n'accepte les arguments 10
    Voici comment je programme l'initialisation de ma DataGridView :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    private void initcommande(BindingList<Article> _artcommande)
            {
                foreach (Article item in _calcfact)
                {
                    _artcommande.Add(item.idarticle, item.reference, item.famille, item.unite, item.quantite, item.prixunitaire, item.remise,
                        Facturation.prixTVA(item.prixunitaire), Facturation.remisepourcent(item.prixunitaire, item.remise),
                        Facturation.prixachatnet(item.prixunitaire, Facturation.prixTVA(item.prixunitaire)));
                }
            }

    Ma question est donc, comment instancier/programmer une surcharge sur une classe déjà existante ?

    Merci d'avance !

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 438
    Par défaut
    Bonjour,
    Comme l'indique le message, il suffit de surcharger la méthode Add de ta classe, pour y ajouter les 3 paramètres "manquants".

    Tatayo.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2021
    Messages : 10
    Par défaut
    Bonjour,
    Je suis bien d'accord qu'il faut surcharger cette méthode. Mais comment le faire ?
    Je n'arrive pas à visualiser la chose en code ........

    Merci.

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 438
    Par défaut
    Ca se fait dans le code de la classe. Par exemple ici j'ai une méthode avec deux prototypes différents:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    		public JULIAContext GetContext(string logLevel, QueryTrackingBehavior queryTrackingBehavior, QuerySplittingBehavior querySplittingBehavior = QuerySplittingBehavior.SingleQuery, bool detailedErrors = false, bool useLazyLoading = true, int commandTimeout = 30, bool enableSensitiveDataLogging = false)
    		{
    ...
    		}
    		public JULIAContext GetContext(ContextParameters parameters) => GetContext(parameters.LogLevel, parameters.QueryTrackingBehavior, parameters.QuerySplittingBehavior, parameters.DetailedErrors, parameters.UseLazyLoading, parameters.CommandTimeout, parameters.EnableSentitiveDataLogging);
    Tu as un tutoriel ici.

    Tatayo.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2021
    Messages : 10
    Par défaut
    J'ai déjà vu ce cours celui-ci ne convient pas à mon application.

    Dans ma classe article dans les constructeurs qu'est-ce que je dois ajouter ?

    L'utilisation d'un override est-elle appropriée ? Et comment l'appliquer ?

    Désolé mais je n'ai jamais travailler avec les surcharges, c'est la première fois que je les abordes.

    Voici une partie du code de ma classe Article :

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    // --- --- Constructeurs
     
            public Article(string idarticle, string reference, string famille, string unite, int quantite, double prixunitaire, double remiseeuro)
            {
                _idarticle = idarticle;
                _reference = reference;
                _famille = famille;
                _unite = unite;
                _quantite = quantite;
                _prixunitaire = prixunitaire;
                _remiseeuro = remiseeuro;
            }
     
            public static double prixTVA(double prixunitaire)
            {
                double prixtva = 0;
     
                prixtva = prixunitaire * 0.2;
     
                return Math.Round(prixtva, 2);
            }
     
            public static double remisepourcent(double prixunitaire, double remise)
            {
                double pourcentrem = 0;
     
                pourcentrem = (remise * 100) / prixunitaire;
     
                return Math.Round(pourcentrem, 2);
            }
     
            public static double prixachatnet(double prixunitaire, double tva)
            {
                double prixnet = 0;
     
                prixnet = prixunitaire - tva;
     
                return prixnet;
            }
    Puis voici l'endroit qui sera surchargé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private void initcommande(BindingList<Article> _artcommande)
            {
                foreach (Article item in _calcfact)
                {
                    _artcommande.Add(item.idarticle, item.reference, item.famille, item.unite, item.quantite, item.prixunitaire, item.remise,
                        Article.prixTVA(item.prixunitaire), Article.remisepourcent(item.prixunitaire, item.remise),
                        Article.prixachatnet(item.prixunitaire, Article.prixTVA(item.prixunitaire)));
                }
            }

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    une surcharge est une méthode ayant le même nom qu'une autre, mais une signature différente (signature = paramètres par leur type et leur nombre)


    si tu as une méthode void Add(string a)
    tu peux ajouter simplement une méthode en dessous void Add(string a, int b) et celle ci a un paramètre en plus que l'autre
    tu peux après utiliser celle que tu veux

    si tu n'as pas accès au code source de la classe dans laquelle tu veux rajouter une surcharge, tu ne peux pas ajouter de surcharge
    tu peux éventuellement ajouter une méthode d'extension, mais pour ca il faut t'assurer que ce que tu veux faire est faisable (setter une paire d'autres trucs)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Compter le nombre d'instance d'une classe
    Par themadmax dans le forum C#
    Réponses: 6
    Dernier message: 12/07/2008, 09h48
  2. récupérer le nombre d'arguments d'une fonction
    Par hector2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 17/03/2008, 11h35
  3. Réponses: 4
    Dernier message: 08/02/2008, 13h01
  4. PB de passage d'argument dasn une classe
    Par Naelhem dans le forum C++
    Réponses: 13
    Dernier message: 26/10/2006, 20h03
  5. [VB.NET] passage d'arguments d'une classe(form1) à une autre
    Par zouhib dans le forum Windows Forms
    Réponses: 5
    Dernier message: 05/05/2006, 16h54

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