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 :

Problème : faire une liste de références


Sujet :

C#

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Problème : faire une liste de références
    Déja bonjour à tous,

    Voilà je vous explique mon problème somme toute pas très compliqué, mais le débutant que je suis n'a pas trouvé la solution.

    Je voudrais avoir une liste qui me renvoie le référence de l'objet stocké.

    Je m'explique, lorsque je fait MaListe.Add(UneValeur) la liste stock la référence à mon objet UneValeur.

    Mais si je fait UneAutreValeur = MaListe[0], alors UneValeur et UneAutreValeur ne sont pas égaux en référence.
    La liste me renvoie donc une copie de mon objet.

    J'aimerais récupéré la référence à mon objet !

    Comment puis-je faire ?

    PS : L'exemple que je donne est une liste mais si une méthode équivalente existe je suis preneur.

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Rectification
    En faite les liste ne contiennent pas les référence au objets mais bel et bien une copie de l'objet.

    Mais le problème reste inchangé.

  3. #3
    Expert éminent
    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 : 46
    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
    Points : 7 660
    Points
    7 660
    Par défaut
    C'est quoi la "liste" en question (ArrayList, List<T>, liste perso, ...) ? Ça nous aiderait
    Pas de questions techniques par MP

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Points : 338
    Points
    338
    Par défaut
    tu est bien sur que tu ne fait rien qui pourrais crèè une nouvelle instance de tes objets???

    new, copy, clone.....

    car a ce que je sache par nature le C# utilise toujours les references.....

  5. #5
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Si le type de l'objet stocké dans la liste est un type primitif (int, double, char, etc) ou un enum ou une string, tu obtiendra une copie.
    Si l'objet est un type référence, tu obtiendra une copie de la référence.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Réponse
    Merci pour vos réponse et en fait la réponse que je cherchait est plus ou moins ce que Saumon Agile à dit.

    Les listes dont je parlait étaient les list<T> et effectivement seul les type de base sont passés par copie.

    L'astuce consiste donc à englober le type de base dans une classe.
    Il sera donc passé par référence.

  7. #7
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    pour être plus précis, .Net présente une dualité entre les class et les struct : les uns sont par références, les autres par copie. Un int, un DateTime, un double, sont des structs ; tout le reste ou presque sont des classes.

    Sans oublier les strings qui sont des classes bien particulières
    ಠ_ಠ

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

Discussions similaires

  1. Faire une liste plus jolie de ma liste:lecture de base mysql
    Par CyberTwister dans le forum Requêtes
    Réponses: 8
    Dernier message: 16/02/2006, 23h31
  2. Comment faire une liste d'évènements ?
    Par WebPac dans le forum Langage
    Réponses: 4
    Dernier message: 16/02/2006, 10h36
  3. [VB]faire une liste
    Par kleen3x dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 19/01/2006, 17h40
  4. Comment faire une liste d'image de choix ?
    Par poussinphp dans le forum Composants VCL
    Réponses: 4
    Dernier message: 01/10/2005, 00h34
  5. Faire une liste de device??
    Par jackjack dans le forum DirectX
    Réponses: 1
    Dernier message: 23/05/2003, 14h43

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