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

ASP.NET Discussion :

Trivial : collection


Sujet :

ASP.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 15
    Par défaut Trivial : collection
    Bonjour,
    voici une rapide question triviale :

    j'ai une boucle dans laquelle je value un objet Pair que j'ajoute à la collection.
    Le problème est qu'a chaque fois que je change la valeur de unePaire, tout les element de ma collection prennent la même valeur.

    Je viens de c++ où dans ce language l'utilisation de pointeur permet de résoudre ce type de pb.

    Comment fait on en c# ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            while (il != null)
            {
                IFeatureLayer ife = (IFeatureLayer)il;
     
                unePaire.First = ife.Name;
                unePaire.Second = idBYName(ife.Name).ToString();
     
                collec.Add(unePaire);
     
                il = enuml.Next();
            }
    Merci

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Dans ta boucle, l'objet unePaire que tu utilises est unique (tu utilises la même instance) et donc tu ajoutes le même objet (la même référence) sans arrêt à la collection. Tu "pointeras" toujours sur le même objet et si tu le modifies tu auras l'impression d'avoir modifié tous les objets, mais en fait tu n'as réellement qu'un seul objet.

    Il faut que tu instancies un objet de type Pair, que tu l'initialise et que tu l'ajoutes à la collection à chaque passage dans la boucle

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 15
    Par défaut
    En effet merci !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    while (il != null)
            {
                IFeatureLayer ife = (IFeatureLayer)il;
                
                unePaire = new Pair();
                unePaire.First = ife.Name;
                unePaire.Second = idBYName(ife.Name).ToString();
     
                collec.Add(unePaire);
                 
                il = enuml.Next();
            }

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

Discussions similaires

  1. []Erreur sur second emploi collection binding
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 08/03/2004, 18h02
  2. [VB6] Sauvegarder une collection d'objets
    Par Sayagh dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 19/09/2003, 11h58
  3. [VB6] la collection controls
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 30/04/2003, 17h03
  4. Comment créér une collection sous Delphi
    Par PsyKroPack dans le forum Langage
    Réponses: 6
    Dernier message: 11/02/2003, 13h20
  5. [VB6] Modifier la clé d'un élément d'une collection
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/11/2002, 14h49

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