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 implémenter un ArrayList typée ?


Sujet :

C#

  1. #1
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 55
    Par défaut [C#] Comment implémenter un ArrayList typée ?
    Bonjour,


    J'ai besoin d'un tableau dont je ne connais pas la taille au départ. Des nouvelles lignes apparaissent enfonction de l'utilisateur.

    Je pensais donc utilisé une ArrayList.

    Le problème est qu'il me faut un tableau à 4 dimensions. Pour cela j'ai créer une structure.

    Ma question est la suivante :
    Comment définir cette structure pour l'ArrayList ou si c'est pas possible, comment ajouter une ligne à montableau a fur et à mesure du traitement.?

    Merci

  2. #2
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Soit j'ai pas compris la question, soit la réponse est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MyStruct info = new MyStruct(valeur1, valuer2, valeur3, valeur 4);
    _monArrayList.Add(info);

  3. #3
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 55
    Par défaut
    le problème ici c'est que je n'ai pas de constructeur pour MyStruct donc je ne peux utiliser new...

    Faut-il déclarer la structure dans une nouvelle classe?

    Merci

  4. #4
    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
    Par défaut
    Citation Envoyé par kooljy
    le problème ici c'est que je n'ai pas de constructeur pour
    Bonjour,

    Qu'est ce qui t'empêche d'en faire un?

  5. #5
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 55
    Par défaut
    Je viens de comprendre.
    Je suis obligé de créer une classe ou plutot une struct avec constructeur, attributs..

    Je pensais qu'on pouvait déclarer la structure dans une classe existante...

  6. #6
    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
    Par défaut
    Citation Envoyé par kooljy
    Je pensais qu'on pouvait déclarer la structure dans une classe existante...
    Je ne suis pas sur de comprendre.
    Tu parles de ça?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class Test
    {
        struct myStruct
        {
           int i;
        }
    }

  7. #7
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 55
    Par défaut
    j'ai du faire ca
    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
     
    public struct StructCompetence
        {
     
            public Competence c;
            public bool ajouter;
            public bool supprimer;
            public bool modifier;
     
            public StructCompetence(Competence c, bool ajout, bool supp, bool modif)
            {
                this.c = c;
                this.ajouter = ajout;
                this.supprimer = supp;
                this.modifier = modif;            
            }
        }
    comme ca, je peux faire un StructCompetence = new(....);

    Ca fonctionne comme je veux

  8. #8
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Mmh.. tu aurais tout aussi bien en faire une classe avec tes champs en privé, puis des accesseurs
    get/set publics

    sinon je ne vois pas trop l'intérêt des trois champs bool, ne serait-il pas judicieux de remplacer par une valeur d'Enum dont une part defaut

    si tu es sous 2.0, tu peux remplacer ton ArrayList par un List<StructCompétence>

  9. #9
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 55
    Par défaut
    Malheureusement je suis sur le framework 1.1.

    En ce qui concerne les 3 bool, il me les faut car il peut y'avoir différents traitements (si modifier = true, supprimer = false et ajouter = true => traitement différent de modifier = true, supprimer= false et ajouter = false).

    En ce qui concerne les attributs en privés et accesseurs :

    J'utilise par la suite très souvent cette structure. Cela m'évite de déclarer a chaque fois une variable pour récupérer la valeur du champ.

    s.supprimer au lieu de bool supp = s.GetSupprimer();

    non?

  10. #10
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Citation Envoyé par kooljy
    ...En ce qui concerne les 3 bool, il me les faut car il peut y'avoir différents traitements (si modifier = true, supprimer = false et ajouter = true => traitement différent de modifier = true, supprimer= false et ajouter = false).

    En ce qui concerne les attributs en privés et accesseurs :

    J'utilise par la suite très souvent cette structure. Cela m'évite de déclarer a chaque fois une variable pour récupérer la valeur du champ.

    s.supprimer au lieu de bool supp = s.GetSupprimer();

    non?
    Justement c'est tout a fait le rôle d'une Enum avec FlagsAttribute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    [FlagsAttribute] 
        enum Actions
        {
            None= 0,
            Added = 1,
            Deleted = 2,
            Updated = 4
        };
    Ce qui te permet toutes les combinaisons possibles avec un seul champ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class ItemCompetence
        {
     
            private Competence c;
            private Actions myActions;
     
        //...
    voir > Classe FlagsAttribute

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

Discussions similaires

  1. [ArrayList] Comment insérer des objet dans ArrayList
    Par jean1979 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 13/10/2011, 11h42
  2. [VB.NET] Comment transférer une liste d'objet typé en NetTCPBinding?
    Par Dnx dans le forum Windows Communication Foundation
    Réponses: 1
    Dernier message: 24/09/2008, 12h57
  3. Comment en VB6 récupérer un ArrayList d'une DLL écrite en VB.Net
    Par BGC_Laurent dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 04/04/2007, 11h08
  4. [ADO.NET][C#]Comment forcer Fill correct de DataSet typé ?
    Par Manralf dans le forum Accès aux données
    Réponses: 23
    Dernier message: 21/02/2006, 09h50
  5. [C#] Comment créer un byte[] d'un ArrayList ?
    Par Royd938 dans le forum C#
    Réponses: 5
    Dernier message: 26/09/2005, 16h20

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