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 :

[C#] Comment utiliser les objets d'un ArrayList ?


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 31
    Points : 34
    Points
    34
    Par défaut [C#] Comment utiliser les objets d'un ArrayList ?
    Bonjour

    J'ai un problème avec une ArrayList d'objet d'une classe perso, je créer une list d'object, j'ajoute un objet de ma classe et je souhaite pouvoir appeller les méthode de ma classe sur l'objet nouvellement créer mais cela ne fonctione pas.

    voici un extrait de mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
                StreamReader istream = new StreamReader(chemin_fichier);
                int Id_sequence_courente;
                string contenu_fichier;
                contenu_fichier = istream.ReadToEnd();
                do
                {
                    Id_sequence_courente = this.Ajouter_sequence();
                    m_sequence[Id_sequence_courente].Lecture_sequence(...);
     
                }
                while (...);
    Il ne fonctionne pas.

    quelqu'un a t'il une solution (je débute en c#)?

    Merci de votre réponse

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Tu dois faire un cast sur ton objet provenant de l'ArrayList, car ce qui est stocké dans une ArrayList, ce sont des objects

    Si m_sequence est ton ArrayList, essaye un truc comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (Ton_Type_D_Object)(m_sequence[Id_sequence_courente]).Lecture_sequence(...);

    Mais attention, le boxing/unboxing, c'est pas recommandé niveau performance

  3. #3
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    ArrayList contient une collection d'object, pour accéder à ta classe il faut donc faire un Cast :

    je suppose que le type de ta séquence est Class_Sequence.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
                StreamReader istream = new StreamReader(chemin_fichier);
                int Id_sequence_courente;
                string contenu_fichier;
                contenu_fichier = istream.ReadToEnd();
                do
                {
                    Id_sequence_courente = this.Ajouter_sequence();
                    ((Class_Sequence) m_sequence[Id_sequence_courente]).Lecture_sequence(...);
     
                }
                while (...);

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par Morpheus
    Mais attention, le boxing/unboxing, c'est pas recommandé niveau performance :)
    Ça tombe bien, y a pas de boxing/unboxing là, juste un cast :)

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par Maniak
    Citation Envoyé par Morpheus
    Mais attention, le boxing/unboxing, c'est pas recommandé niveau performance
    Ça tombe bien, y a pas de boxing/unboxing là, juste un cast
    Pour ajouter son objet dans l'ArrayList, il y a bien un boxing (conversion de son objet en type object)

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par Morpheus
    Citation Envoyé par Maniak
    Citation Envoyé par Morpheus
    Mais attention, le boxing/unboxing, c'est pas recommandé niveau performance :)
    Ça tombe bien, y a pas de boxing/unboxing là, juste un cast :)
    Pour ajouter son objet dans l'ArrayList, il y a bien un boxing (conversion de son objet en type object) :wink:
    Revois ta définition (index MSDN, 'boxing', premier choix :)

    Si tu mets un int dans un ArrayList, il y a boxing, pour que ce type *valeur* puisse être traité comme un type *référence*. Via wrapper, d'où problème de perfs vu que ça doit aussi être fait dans l'autre sens quand l'object redevient int (unboxing donc)

    Si ce que tu mets dans l'ArrayList est une classe, donc déjà type référence, pas de boxing. Juste un cast pour récupérer l'objet et le repasser dans son type originel. Il n'y a même pas de cast pour remplir l'ArrayList, vu que quelle que soit la classe, elle dérive d'object :)

    Boxing = valeur -> référence
    Unboxing = référence -> valeur

    Rien à voir avec les casts :)

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Le mieux c'est encore (de loin) List<MaClassePerso> :)

    (oui j'aime les templates. 3 ans et demi que je les attendais bon sang :)

  8. #8
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    En .NET 2 evidemment les generics (c juste pr dire quelque chose :p)

  9. #9
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 31
    Points : 34
    Points
    34
    Par défaut
    merci pour vos réponse, j'ai pas pu vous repondre avant car j'était absent du bureau, la solution de smyley fonctione

    pb résolut.

  10. #10
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 181
    Points : 516
    Points
    516
    Par défaut
    Et pour un Arraylist de Arraylists de strings? Existe-t-il un truc du genre qui fonctionne?

    (string)(unArraylist)unArraylist[index].Add("string");

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

Discussions similaires

  1. Comment utiliser les données stockées dans un ArrayList?
    Par lsebe2 dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 01/11/2014, 08h37
  2. Réponses: 8
    Dernier message: 21/02/2012, 18h21
  3. comment utiliser les objets DAO
    Par marc_calagac dans le forum VBA Access
    Réponses: 3
    Dernier message: 21/06/2007, 21h01
  4. Réponses: 11
    Dernier message: 22/12/2003, 21h06
  5. Comment utiliser les styles XP avec Dev-C++?
    Par abraxas dans le forum Dev-C++
    Réponses: 3
    Dernier message: 05/10/2003, 19h47

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