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 :

différence entre les différentes collections


Sujet :

C#

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut différence entre les différentes collections
    Bonjour.

    J'ai une petite question à propos des différences entre ces différentes collections. Disons ue j'ai une classe "Player".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public Player[] Players = new Player[10];
    public Dictionary<int, Player> Players = new Dictionary<int, Player>();
    public List<Player> Players = new List<Player>();
    Je suis entrain de créer un jeu de plateau sur pc, j'ai besoin de savoir ce que je fais ^^.

    Merci .

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 179
    Points : 4 493
    Points
    4 493
    Par défaut
    -Le premier est un Array (taille fixe)

    -Le deuxieme est un dictionnaire tu associes une key à une valeur
    1, Toto
    2, Tata
    1, Tutu // explose pour duplicate key
    plus rapide pour retrouver des objets

    -Le 3eme est une simple liste (taille dynamique possibilité d'insertion/suppression à un endroit précis)

    En général on utile souvent des List<T> et rarement des "Array" T[]
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Tableau statique de 10 players.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public Player[] Players = new Player[10];
    Dictionnaire de players. Revient à un tableau dynamique de players où chaque player est identifié par un int unique dans le dictionnaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public Dictionary<int, Player> Players = new Dictionary<int, Player>();
    Un tableau dynamique de player.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public List<Player> Players = new List<Player>();
    Tout fonctionne ça dépend de ce que tu veux faire.

    J'ai répondu à ta question où j'ai vraiment rien compris à la demande ?

    Edit : trop lent :)

  4. #4
    Membre habitué
    Homme Profil pro
    Architecte C#
    Inscrit en
    Février 2003
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte C#

    Informations forums :
    Inscription : Février 2003
    Messages : 78
    Points : 144
    Points
    144
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public Player[] Players = new Player[10];
    il s'agit d'un tableau, une suite d'objet player a taille fixe (ici, 10), tu pourra modifier le contenu du tableau mais pas dépasser 10 players.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public Dictionary<int, Player> Players = new Dictionary<int, Player>();
    ici, c'est un dictionnaire, il va faire une correspondance entre un int et un player (souvent, l'id)

    Tu peux ainsi récupérer ton player non plus par son ordre mais par un quelconque index que tu lui aura mis.

    ex :
    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
    public Dictionary<int, Player> Players = new Dictionary<int, Player>();
    var player1 = new Player
    {
    Id = 1,
    Nom = "Player1"
    };
     
    var player2 = new Player
    {
    Id = 10,
    Nom = "Toto"
    };
     
    Players.Add(player1.Id, player1);
    Players.Add(player2.Id, player2);
    et ainsi, Players[10] te renverra player2, il s'agit ici d'un "index" que c'est a toi de gérer.

    Contrairement au tableau, le dictionnaire n'a pas de taille fixe, il est flexible.


    et enfin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public List<Player> Players = new List<Player>()
    la liste est comme un tableau auquel tu peux ajouter ou supprimer des éléments. Sa taille variera en fonction de son contenu.

    Bonne journée et bon code

  5. #5
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    merci pour vos réponses, je comprends mieux maintenant. Pouvez-vous me dire lequel de ces tableau est le plus performant du point de vue gestion de mémoire ?
    J'essaie d'apprendre à créer des applis le plus optimisé possible. aujourd'hui je commence la création d'un jeu de plateau "risk" avec compétence réseau.

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 179
    Points : 4 493
    Points
    4 493
    Par défaut
    Chacun a ses avantages et ses incovéniens.

    Si tu dois souvent faire des recherches dans une la même List un Dictionary peut etre utile.
    Part exemple :
    Tu stocks les communes dans une table a part
    Ta table étudiant a Nom,Prenom,NumeroCommune.
    Pour ne pas faire les inner join quand tu veux affichier le nom de la commune tu va recherche la valeur de le Dictionary la key sera le numero de commune et la valeur soit un objet commune soit un string avec le nom de la commune


    L'Array est plus performant si tu as toujours la même taille mais perso je te le déconseille au profit de la List qui permet de faire plein de chose (ajouter/supprimer des élements , trier, rechercher,...)
    Je ne suis qu'un pauvre débutant alors ne frappez pas si mes idées ne sont pas bonnes

  7. #7
    Membre éprouvé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Points : 945
    Points
    945
    Par défaut
    Tu demandes lequel est le plus optimisé alors que tu ne connais pas ces structures de données. Avant "d'optimiser" quoique ce soit, je te conseille de le faire le plus simplement possible dans un premier temps.

    Il faut avoir déjà un certain niveau avant de s'amuser à optimiser quoique ce soit (compléxité algorithmique, mémoire, réseau, etc ...)
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

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

Discussions similaires

  1. Différence entre les différentes distributions RedHat
    Par TSUS86 dans le forum RedHat / CentOS / Fedora
    Réponses: 0
    Dernier message: 10/03/2010, 11h01
  2. Différence entre les différentes versions 2000, 2005 et 2008
    Par Oberown dans le forum Administration
    Réponses: 1
    Dernier message: 14/10/2009, 16h52
  3. Lister la différence entre les différents dossier
    Par krfa1 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 21/06/2007, 15h53
  4. Différence entre les différentes marques
    Par Ekinoks dans le forum Ordinateurs
    Réponses: 8
    Dernier message: 18/12/2006, 16h27
  5. Réponses: 5
    Dernier message: 22/09/2006, 11h48

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