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 :

Tableaux multidimensionnels ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur
    Inscrit en
    Avril 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2007
    Messages : 52
    Par défaut Tableaux multidimensionnels ?
    Bonjour à tous,

    Voilà, aujourd'hui j'ai une classe MaClasse que je stocke dans une List<MaClasse> et ensuite j'ai plusieurs méthodes qui parcours cette liste afin de faire quelques modifications au sein de plusieurs éléments, du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach(MaClasse m in MaListeDeMaClasse)
    {
        if(m.Propriété_1 == Id_recherché)
        {
            m.Propriété_2 = valeur;
        }
    }
    Je me demandais donc s'il n'était pas plus "optimisé" de passer tout simplement à un tableau à plusieurs dimensions que je pourrais manipuler ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tab['id']['propriété_1'] = valeur_1;
    tab['id']['propriété_2'] = valeur_2;
    Ceci éviterait du coup de parcourir la liste à chaque coup étant donné que je dispose déjà de l'id.

    Du coup, j'aurai aimé savoir comment le déclarer un tel tableau et comment ajouter les éléments.

    Merci d'avance pour votre aide !
    Lionel.

  2. #2
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Par défaut
    Bonjour,

    Il y a également la possibilité d'utiliser un dictionnaire de type Dictionary<Type de l'identifiant, MaClasse>.

    Il sera alors possible d'accéder à l'élément correspondant à l'id quasiment comme vous le souhaitez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monDictionnaire[idRecherché].LaPropriété = valeur;
    Edit : Attention, dans un dictionnaire un id ne peut être en doublon

  3. #3
    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
    Bonjour,

    Pour compléter la réponse précédente; quand la "clef" appartient à l'objet j'ai tendance à utiliser KeyedCollection<TKey, TItem> (sous certaines réserves dépendant du cas concret)

    Cordialement !

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Il est possible qu'il y ait un problème de design ici.

    Sous réserve de voir le besoin fonctionnel précis, je ne vois pas a priori la finalité de conserver en dehors des instances les valeurs des propriétés.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par pot2yaourt Voir le message
    Je me demandais donc s'il n'était pas plus "optimisé" de passer tout simplement à un tableau à plusieurs dimensions que je pourrais manipuler ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tab['id']['propriété_1'] = valeur_1;
    tab['id']['propriété_2'] = valeur_2;
    D'un point de vue POO, c'est une aberration... tu sors les données des objets auxquels elles appartiennent, ça va être inmaintenable ! En plus tu perds le typage des propriétés avec ce système...

    La solution du dictionnaire (ou éventuellement KeyedCollection) proposée plus haut me semble beaucoup plus adaptée

  6. #6
    Membre confirmé
    Profil pro
    Développeur
    Inscrit en
    Avril 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2007
    Messages : 52
    Par défaut
    Merci à tous pour vos réponses !

    Au final, le code a été entièrement revu, et du coup on garde List<MaClasse> et il n'y a plus qu'une méthode qui fait un foreach sur la liste. D'ailleurs, la liste ne contenant, en moyenne, qu'une 15aine d'éléments, côté perf ça reste très correct.

    Encore merci à tous pour votre aide !
    Lionel.

  7. #7
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Par défaut
    S'il n'y a qu'un élément qui correspond à l'id, le foreach sur toute la liste n'est pas idéal, en faisant un Find(x=> x.LaPropriété == valeur) cela serait mieux !

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

Discussions similaires

  1. [MySQL] Problème délicat (tableaux multidimensionnels)
    Par setblue dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/07/2007, 21h46
  2. Problème de tableaux multidimensionnels
    Par progfou dans le forum C#
    Réponses: 3
    Dernier message: 09/03/2007, 10h23
  3. AIDE sur Tableaux multidimensionnels
    Par orj30754 dans le forum C
    Réponses: 4
    Dernier message: 07/11/2006, 12h31
  4. Réponses: 4
    Dernier message: 31/08/2006, 16h31
  5. Réponses: 5
    Dernier message: 24/12/2005, 15h40

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