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 :

Tableau de taille non fixe


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Points : 19
    Points
    19
    Par défaut Tableau de taille non fixe
    Bonjour,
    Je souhaiterais initialiser un tableau et le remplir au fur et à mesure, sans que je connaisse à l'avance sa taille... un tableau de taille variable.

    Sur les conseils dun des membres du forum j'avais utilisé des listes, mais j'ai un problème, c'est que je n'ai pas d'index dans la liste (ou alors je n'ai pas su bien utiliser les listes, j'avoue ne pas être un expert).

    Est ce que vous pourriez m'indiquer une solution ? est il possible d'avoir un tableau de taille non fixe ? Peut on mettre des index dans les listes ? Y a t'il d'autres possibilités.

    Merci d'avance

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    177
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 177
    Points : 130
    Points
    130
    Par défaut
    Pour avoir l'index (numerique) des liste il faut juste faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    List<String> maListe = new List<String();
    String second = maListe[1];
    Pour avoir des index objet il faut se tourner vers les HashTable et les Dictionnary

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Points : 19
    Points
    19
    Par défaut
    Comment faites vous pour écrire dans votre liste, à l'index 1 par exemple ?

    En effet, j'ai une erreur si j'écris par exemple

  4. #4
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 148
    Points : 291
    Points
    291
    Par défaut
    Ceci est tout à fait normal


    Pour écrire dans une liste il faut faire comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    List<string> Villes = new List<string>();
    Villes.Add("Paris");


    Pour écrire dans une array :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int[] mon_array = new int[3];
    mon_array[0] = 2;

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Points : 19
    Points
    19
    Par défaut
    Merci, mais quand vous faites

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Villes.Clear()
    Villes.Add("Paris");
    Villes.Add("Lyon");
    Villes.Add("Marseille");
    Est ce que Paris a l'indice 0, Lyon l'indice 1 et Marseille l'indice 2 ?
    Quand j'utilise mes listes, j'ai l'impression qu'il ajoute tout à la suite, mais que je n'ai pas d'indices (mais encore une fois, j'utilise peut être mal les listes...)

  6. #6
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Citation Envoyé par nouvelinscrit Voir le message
    Est ce que Paris a l'indice 0, Lyon l'indice 1 et Marseille l'indice 2 ?
    Quand j'utilise mes listes, j'ai l'impression qu'il ajoute tout à la suite, mais que je n'ai pas d'indices (mais encore une fois, j'utilise peut être mal les listes...)
    Salut.

    Pourrais-tu être plus explicite sur ton besoin d'avoir des indices ?

    Sinon, oui, toutes les valeurs sont ajoutées à la suite, et étant donné que "Paris" a été ajouté en premier, la chaîne se trouve à l'indice 0, mais bon en général avec les listes on travaille pas trop avec les indices

    Si tu tiens absolument à avoir des indices et surtout pouvoir les maîtriser, utilise des Dictionary :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dictionary<int, string> values = new Dictionary<int,  string>();
    values.Add(1, "Lyon");
    values.Add(0, "Paris");
    Dans ce cas, "Lyon" a été inséré en premier, tu le gères tout de même à l'indice 1, tandis qu'en mémoire dans la liste du Dictionary il est en pratique à l'indice 0

  7. #7
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    les listes ont bien un index automatique

    donc list.add("Paris")
    si la collection était vide avant, paris aura bien l'index 0 et tu pourras ensuite le modifier via
    list[0] = "Autre ville"

    mais list[0] plante si la collection est vide
    tu peux vérifier avec .count
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Invité
    Invité(e)
    Par défaut
    Au passage si tu as besoin des indices juste pour parcourir ta liste, sache qu'il existe l'instruction foreach pour parcourir les collections :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach(string element in myList)
    Après c'est une boucle classique, sauf qu'au lieu d'utiliser les indices, element représente l'élément courant de ta liste.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 41
    Points : 19
    Points
    19
    Par défaut
    Merci, je comprends mieux comment marchent les listes. Je pense que ca me suffira, mais sinon j'essayerai les Dictionnaries.

    Pour préciser mon besoin, je veux juste utiliser des listes comme de stableaux, en ayant la possibilité d'écrire et d'extraire à n'importe quel index

Discussions similaires

  1. [XL-2010] Déclarer un tableau de taille non connue
    Par raphael.abulker dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/11/2014, 09h45
  2. Tableau de taille non prédéfinie
    Par pythagore3_14 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/08/2008, 14h34
  3. afficher descriptifs de tailles différentes dans un tableau de taille fixe
    Par poupouille dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 02/02/2008, 22h27
  4. tableau de longeur non fixe
    Par fatenatwork dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 28/01/2008, 13h52
  5. Réponses: 24
    Dernier message: 26/04/2007, 15h20

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