Liste d'objet [Résolu]

Signaler
Messages postés
61
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
9 mai 2010
-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
-
Bonjour tout le monde,

j'aimerai afficher tous les éléments d'une liste d'objet en mode console !!

j'ai pour le moment qu'une légère fonction :

public string afftsOuvriers()
        {
            int i;
            for(i=0;i <= lesOuvriers.Count;i++)
            {
                Console.WriteLine(lesOuvriers.ToString());
            }

            return lesOuvriers.ToString();
            Console.Read();
            Console.Read();
        }
mais marche pas

pour info : public List<Ouvrier> lesOuvriers = new List<Ouvrier>();

la classe ouvrier hérite d'employe :
    class Employee
    {
        //Variables Membres
        protected int mbr_matricule;
        protected string mbr_nom;
        protected string mbr_prenom;
        protected int mbr_annaiss;
        protected float mbr_salaire;
        protected int mbr_note = -1;
}
ça ne viendrait pas de mes variables?? qui sont en protected

Merci

7 réponses

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
32
Salut, l'idéal dans ton cas c'est de redéfinir ( overrider ) la méthode ToString et surtout d'utiliser l'opérateur d'indexation de la liste.

List< MyClass > list = new List< MyClass >( 2 );
list.Add( new MyClass( ) );
list.Add( new MyClass( ) );


int cnt = list.Count;
for ( int i = 0; i < cnt; i++ )
{
    MessageBox.Show( list[ i ].ToString( ) );
}
Messages postés
61
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
9 mai 2010
1
a force de chercher on en oublie l'essentiel !!

La liste est comme un tableau, si on ne l'indice pas, on ne peut pas voir ce qu'elle contient.

<nom de la list>[indice].<nom de la colonne>

en esperant que ça aide a d'autres. Merci Lutinore
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
39
Salut

Il y a encore mieux qu'un for en C# (sauf si tu as besoin de l'indice) : le foreach. Voilà la syntaxe :

foreach (Ouvrier o in lesOuvriers)
{
    Console.WriteLine(o.ToString());
}

Ça fonctionne pour toute classe qui implémente IEnumerable. Comme ça tu n'as même pas à te poser la question s'il faut utiliser [i], get(i), getAt(i) et j'en passe.

Krimog :
while (!(succeed = try())) ;
Messages postés
61
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
9 mai 2010
1
encore mieux !! Merci
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
Ha? Depuis quand le foreach est mieux qu'un for? C'est nouveau?
Il y a plusieurs cas de figure où c'est faux, par exemple en terme de performance, c'est l'inverse....

<hr />
-Blog-
-Site Perso-
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
39
En terme de perfs, d'après les quelques tests que j'ai fait, c'était vraiment similaire.
Mais bon, c'est surtout beaucoup plus simple je trouve.
Enfin c'est mon opinion personnelle. Il est extrêmement rare que j'utilise un for si je n'ai pas besoin de l'indice. Peut-être ai-je tord...

Krimog :
while (!(succeed = try())) ;
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
Si on a besoin de l'indice
Si on doit modifier l'objet dans l'itération
Si on doit supprimer l'objet dans l'itération
Si on a besoin de perf (personnellement, je mesure 15-20% de gains)

Je ne crache pas sur le foreach (au contraire!).
De là à dire "Il y a encore mieux qu'un for en C# (sauf si tu as besoin de l'indice) : le foreach", je trouve que y'a de la marge...

C'est pour ça que je me suis permis d'intervenir

<hr />
-Blog-
-Site Perso-