Probleme avec une collection Dictionary

Signaler
Messages postés
146
Date d'inscription
lundi 15 juin 2009
Statut
Membre
Dernière intervention
14 février 2013
-
Messages postés
28
Date d'inscription
lundi 27 avril 2009
Statut
Membre
Dernière intervention
25 mai 2010
-
Bonsoir,

Décidément je vais pas m'en sortir, avec c'est collection.
Après pas mal de difficulté avec une Hashtable avec certaine de résolu une Dictionary.

Tout se passe pour très bien mais voila au remplissage de ma Dictionary que j'implémente avec:

_MonDico.Add (_Collection.Nom , _Collection)

Ma collection étant une classe:
using System;
namespace WindowsFormsApplication1
{
    public class LaCollection
    {
        #region "Champs privés"
        private string _Nom;
        private string _Obj;
        private string _Ind;
        private double _Format;
        private string _Unit;
        private bool _Selection;
        private bool _SelectInter;
        private double _SeuilInter;
        private bool _SelectCourbe;
        #endregion
        #region "Constructeur"
        public LaCollection()
        {
            _Nom = "";
            _Obj = "";
            _Ind = "";
            _Format = 0;
            _Unit = "";
            _Selection = false;
            _SelectInter = false;
            _SeuilInter = 0;
            _SelectCourbe = false;
        }
        #endregion
        #region "Propriétés publiques"
        public string Nom
        {
            get { return _Nom; }
            set { _Nom = value; }
        }
        public string Obj
        {
            get { return _Obj; }
            set { _Obj = value; }
        }
        public string Ind
        {
            get { return _Ind; }
            set { _Ind = value; }
        }
        public double Format
        {
            get { return _Format; }
            set { _Format = value; }
        }
        public string Unit
        {
            get { return _Unit; }
            set { _Unit = value; }
        }
        public bool Selection
        {
            get { return _Selection; }
            set { _Selection = value; }
        }
        public bool SelectInter
        {
            get { return _SelectInter; }
            set { _SelectInter = value; }
        }
        public double SeuilInter
        {
            get { return _SeuilInter; }
            set { _SeuilInter = value; }
        }
        public bool SelectCourbe
        {
            get { return _SelectCourbe; }
            set { _SelectCourbe = value; }
        }
        #endregion
    }
}


Seulement voila, à chaque incrémentation, j'ai bien ma nouvelle Key qui correspond bien au nom de ma _Collection. Mais chaque Value (de tous) sont identique.
Je me retrouve donc avec un Dictionary avec des Key différente mais tout les Value son identique. A chaque "Add" il recopie la même _collection dans toute les précédentes.

Au débogage, je voie bien ma _Collection qui s'incrémente avec les bonnes valeur. Je vois bien qu'à "_MonDico.Add (_Collection.Nom , _Collection)" _Collection est nickel, après il ajoute bien une nouvelle ligne mais en même temps il a remplacé toutes les autres.

J'en peut plus la :) J'y comprend plus rien, cela marchais si bien en VB...


Technicien en électricité Industriel (39 ans), en cours de reconversion BTS IRIS 2eme Année.
Au lycée pendant l'année scolaire, et en stage pendant les vacances scolaire.

5 réponses

Messages postés
146
Date d'inscription
lundi 15 juin 2009
Statut
Membre
Dernière intervention
14 février 2013

Bon j'ai trouvé, à chaque remplissage de _collection je fait un new avant et c'est bon.

Avant je faisais qu'un seul _Collection = new LaCollection(); il faut en faire à chaque nouveau remplissage


Technicien en électricité Industriel (39 ans), en cours de reconversion BTS IRIS 2eme Année.
Au lycée pendant l'année scolaire, et en stage pendant les vacances scolaire.
Messages postés
39
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
7 septembre 2010
1
Salut,

juste pour info tu peut simplifier
public string Nom
{
   get { return _Nom; }
   set { _Nom = value; }
}

par cela :
public string Nom{ get; set; }
Messages postés
146
Date d'inscription
lundi 15 juin 2009
Statut
Membre
Dernière intervention
14 février 2013

Merci

Technicien en électricité Industriel (39 ans), en cours de reconversion BTS IRIS 2eme Année.
Au lycée pendant l'année scolaire, et en stage pendant les vacances scolaire.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
33
@Perecastorr : oui on peut simplifier comme cela... mais attention, ce n'est pas toujours le bon choix.

sébastien


Sébastien FERRAND
Lead Developpeur
Microsoft Visual C# MVP 2005 - 2009
Messages postés
28
Date d'inscription
lundi 27 avril 2009
Statut
Membre
Dernière intervention
25 mai 2010

salut tout le monde
je vous remercie M.megamario pour votre explication , et je voudrais vous demandé comment vous avez déclarer votre dictionary pour accepter tous les valeurs que ce soit string ou bien int ou bien bool????
et merci