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 :

Message d'erreur "impossible de convertir implicitement le type.." [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 102
    Par défaut Message d'erreur "impossible de convertir implicitement le type.."
    Bonjour,


    j'ai écrit une petite méthode pour savoir si je peut faire un "return" d'une list de classe.


    Voici la description de ma petite classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     public  class CLS_STR_EQUIPE_FOOT
         {
     
            // --------> Description Equipe <--------
            // Numéro equipe  
            public int NUM_EQUIPE;
            // Nom equipe 
            public string NOM_EQUIPE;
            //Couleur equipe 
            public string COULEUR_EQUIPE;
        }



    Et voici le code de ma méthode :

    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
    class CLS_EQUIPE_FOOT
        {
        public CLS_STR_EQUIPE_FOOT STR_EQUIPE  = new CLS_STR_EQUIPE_FOOT();
     
            public  List<CLS_STR_EQUIPE_FOOT> CHARGE_EQUIPE_FOOT()
            {
     
     
                STR_EQUIPE.NUM_EQUIPE = 1;
                STR_EQUIPE.NOM_EQUIPE = "LES BONDISSANTS";
                STR_EQUIPE.COULEUR_EQUIPE = "ROUGES & BLANCS";
     
                STR_EQUIPE.NUM_EQUIPE = 2;
                STR_EQUIPE.NOM_EQUIPE = "LES VERTS";
                STR_EQUIPE.COULEUR_EQUIPE = "VERTS & BLANCS";
     
                STR_EQUIPE.NUM_EQUIPE = 3;
                STR_EQUIPE.NOM_EQUIPE = "LES VIOLETS";
                STR_EQUIPE.COULEUR_EQUIPE = "VIOLET & BLANCS";
     
     
                return (STR_EQUIPE); 
     
     
            }
     
        }

    Le compilateur me rejette le "return (STR_EQUIPE) avec le message :

    "Impossible de convertir implicitement le "WINDEV_CLASS_DLL.STR_EQUIPE_FOOT" en 'Système.Collections.Generic.List<WINDEV_CLASS_DLL.CLS_STR_EQUIPE_FOOT>


    Je ne comprends pas le message . Normalement, j'ai le droit de renvoyer une liste de classe depuis une méthode ?


    Merci pour votre aide .

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Par défaut
    Citation Envoyé par LIANAZEL Voir le message
    Je ne comprends pas le message . Normalement, j'ai le droit de renvoyer une liste de classe depuis une méthode ?
    Bonjour,

    Le message t'indique que tu essaye de retourner un STR_EQUIPE_FOOT au lieu d'un List<STR_EQUIPE_FOOT>.

    Donc oui, ta méthode doit renvoyer une liste d'objet, mais tu ne renvoies qu'un objet (et non la liste du coup...)

    PS: le nommage en majuscule rend la lecture du code plus difficile... Généralement les nommage qu'en majuscule sont préférés pour les propriétés constantes.

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 102
    Par défaut
    Bonjour Zenzitone,


    Merci pour ta réponse.


    Je débute vraiment en C#, et je n'ai pas bien saisi le sens de ta réponse.


    Comment faire justement pour renvoyer la liste ?

    si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return List<STR_EQUIPE>;

    j'ai aussi une erreur du compilateur : "'List<STR_EQUIPE>' est un type qui n'est pas valide dans le contexte donné".

    Je tourne en rond ...!

  4. #4
    Membre confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 53
    Par défaut
    Bonjour ,si tu regarde bien dans ta fonction à aucun moment tu n'as crée de list, ce que tu as fais c'est assigner 3 valeur différentes à un même objet puis renvoyer cette objet.

  5. #5
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Il faudrait peut-être songer à lire un tutoriel vu les lacunes sur des éléments quand même plutôt basiques du langage (qui a priori fonctionne différemment du langage que tu sembles connaître à savoir Windev [au jugé du nom du namespace])

    Sinon ta méthode doit créer une liste qui sera retournée puis pour chaque élément qu'elle va contenir créer un objet de ce type, renseigner ses champs/attributs et enfin l'ajouter à la liste sus-mentionnée.
    Au passage cette classe pourrait être revue ; des champs publics c'est pas forcément le plus adapté ; à la rigueur des propriétés (en lecture seule ?) et un constructeur prenant les différentes valeurs à renseigner pourrait être judicieux.


    Citation Envoyé par ZenZiTone Voir le message
    PS: le nommage en majuscule rend la lecture du code plus difficile... Généralement les nommage qu'en majuscule sont préférés pour les propriétés constantes.
    En fait la "norme" du framework concernant les constantes (qui semble être la même que pour les champs statiques en lecture seule) est plutôt le PascalCase (exemple (const) int.MinValue ; (static readonly) string.Empty) ; après il y a des exceptions (les premières [seules ?] qui me viennent sont les constantes mathématiques : Math.PI ou Math.E [mais là c'est aussi bien UPPERCASE que PascalCase ])

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 102
    Par défaut
    Bonjour,


    Merci pour vos infos, voilà j'y suis arrivé :



    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
     class CLS_EQUIPE_FOOT
        {
            // [ Instancie ma nouvelle liste ]
            public List<CLS_STR_EQUIPE_FOOT> STR_EQUIPE = new List<CLS_STR_EQUIPE_FOOT>() ;
     
            public  List<CLS_STR_EQUIPE_FOOT> CHARGE_EQUIPE_FOOT()
            {
     
                // [ Alimente un premier poste de la liste "STR_EQUIPE" ]
                STR_EQUIPE.Add(new CLS_STR_EQUIPE_FOOT() { NUM_EQUIPE = 1, NOM_EQUIPE = "LES BONDISSANTS", COULEUR_EQUIPE = "ROUGES & BLANCS" });
     
                // [ Alimente un deuxieme poste de la liste "STR_EQUIPE" ]
                STR_EQUIPE.Add(new CLS_STR_EQUIPE_FOOT() { NUM_EQUIPE = 2, NOM_EQUIPE = "LES RUGISSANTS", COULEUR_EQUIPE = "VERTS & BLANCS" });
     
                // [ Alimente un troisieme poste de la liste "STR_EQUIPE" ]
                STR_EQUIPE.Add(new CLS_STR_EQUIPE_FOOT() { NUM_EQUIPE = 2, NOM_EQUIPE = "LES ATTAQUANTS", COULEUR_EQUIPE = "ORANGES & BLANCS" });
     
                return STR_EQUIPE; 
     
     
            }
     
        }

    Sehnsucht,

    Tu as raison, mais je lis les tutos et c'est vrai que c'est pas évident de naviguer entre Windev et C#.

    La POO windev et la POO C#, c'est ( un peu ) différent.

    Ceci dit, je découvre C#, et ce langage me plait beaucoup.

    Cordialement,

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

Discussions similaires

  1. [Débutant] Impossible de convertir implicitement le type 'string' en 'int?'
    Par Mougain's dans le forum ASP.NET
    Réponses: 4
    Dernier message: 19/11/2014, 14h29
  2. Réponses: 15
    Dernier message: 01/03/2011, 16h21
  3. Réponses: 6
    Dernier message: 22/07/2009, 15h27
  4. Réponses: 5
    Dernier message: 27/06/2006, 12h27
  5. svrmgr30 - message d'erreur destination impossible
    Par pascale86 dans le forum Oracle
    Réponses: 4
    Dernier message: 08/12/2005, 15h58

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