Liste d'objet [Résolu]

zoot06 61 Messages postés mardi 27 mai 2008Date d'inscription 9 mai 2010 Dernière intervention - 8 avril 2009 à 13:27 - Dernière réponse : cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention
- 9 avril 2009 à 10:25
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
Afficher la suite 

7 réponses

Répondre au sujet
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 8 avril 2009 à 14:04
+3
Utile
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( ) );
}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Lutinore
zoot06 61 Messages postés mardi 27 mai 2008Date d'inscription 9 mai 2010 Dernière intervention - 8 avril 2009 à 14:33
0
Utile
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
Commenter la réponse de zoot06
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 8 avril 2009 à 16:05
0
Utile
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())) ;
Commenter la réponse de krimog
zoot06 61 Messages postés mardi 27 mai 2008Date d'inscription 9 mai 2010 Dernière intervention - 8 avril 2009 à 18:59
0
Utile
encore mieux !! Merci
Commenter la réponse de zoot06
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 8 avril 2009 à 22:19
0
Utile
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-
Commenter la réponse de cs_Bidou
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 9 avril 2009 à 00:52
0
Utile
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())) ;
Commenter la réponse de krimog
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 9 avril 2009 à 10:25
0
Utile
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-
Commenter la réponse de cs_Bidou

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.