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 :

Déclaration automatique d'objets


Sujet :

C#

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Déclaration automatique d'objets
    Bonjour,

    Je sais que le C# n'a rien prévu pour ça et qu'il doit exister d'autres solutions mais je ne vois pas comment faire autrement donc je suis un peu bloqué. Dans mon application, l'utilisateur peut utiliser un nombre quelconque de vecteurs, les coordonnées de ces vecteurs sont stockés dans un fichier texte et lorsque l'utilisateur le décide, les vecteurs sont chargés depuis ce fichier et traités par le programme. Mon problème est la génération du nombre aléatoire de vecteurs.

    En toute logique, j'aurais voulu faire une boucle for de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for (i = 0; i < nb_vecteurs; i++)
    {
        vecteur vct(i) = new vecteur(); // cette ligne n'est pas correcte
    }
    Mon objectif est déclarer les vecteurs comme étant vct1, vct2, vct3... Je sais que ce n'est pas correct en C# mais je ne vois pas d'autre moyen de le faire, alors si vous pouviez m'indiquer comment faire cela ou quelle autre méthode utiliser pour arriver au même résultat, vous m'aideriez grandement.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Bonjour,

    Ce n'est pas possible en C# de déclarer des variables en les indexant comme en PHP...

    Il faut utiliser une collection. Contrairement aux tableaux, il n'est pas nécessaire de fixer par avance la taille de la collection. Les principales collections se trouvent dans le namespace System.Collections et dans System.Collections.Generic (pour les collections génériques).

    Voici un exemple qui utilise une collection List générique :

    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
    16
    17
    18
    19
     
    // Initialisation
    List<vecteur> vecteurs = new List<vecteur>();
    // Ajout des vecteurs
    for(int i = 0 ; i < nb_vecteurs ; i++) {
       vecteur vct = new vecteur();
       vecteurs.Add(vct);
    }
    // Nombre de vecteurs
    int nbvecteurs = vecteurs.Count;
    // Lecture de tous les vecteurs par foreach
    foreach(vecteur vct in vecteurs) {
       Console.WriteLine(vct.ToString());
    }
    // Lecture de tous les vecteurs par for
    for(int i = 0 ; i < vecteurs.Count ; i++) {
      vecteur vct = vecteurs[i];
      Console.WriteLine(vct.ToString());
    }
    L'équivalent non générique de List est ArrayList. Il ne faudra par contre pas oublier d'effectuer des cast lorsqu'on récupère une valeur de la ArrayList car elle renvoie un object.

    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
    16
    17
    18
    19
     
    // Initialisation
    ArrayList vecteurs = new ArrayList();
    // Ajout des vecteurs
    for(int i = 0 ; i < nb_vecteurs ; i++) {
       vecteur vct = new vecteur();
       vecteurs.Add(vct);
    }
    // Nombre de vecteurs
    int nbvecteurs = vecteurs.Count;
    // Lecture de tous les vecteurs par foreach
    foreach(vecteur vct in vecteurs) {
       Console.WriteLine(vct.ToString());
    }
    // Lecture de tous les vecteurs par for
    for(int i = 0 ; i < vecteurs.Count ; i++) {
      vecteur vct = (vecteur)vecteurs[i];
      Console.WriteLine(vct.ToString());
    }
    List<> est disponible à partir de .NET 2.0. ArrayList est disponible dans toutes les versions du framework.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Merci bien pour cette réponse claire te précise, c'est vrai que ce n'est pas tellement compliqué mais j'aurais mis beaucoup de temps à trouver, merci beaucoup.

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

Discussions similaires

  1. Position "automatique" des objets
    Par pwfsic dans le forum MATLAB
    Réponses: 4
    Dernier message: 13/06/2007, 12h59
  2. [VBA-Excel] Déclaration d'un objet
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/09/2006, 15h31
  3. Déclaration d'un objet CMutex
    Par olive_le_malin dans le forum Visual C++
    Réponses: 2
    Dernier message: 11/07/2006, 13h45
  4. Instanciation automatique d'objets
    Par moulette85 dans le forum Langage
    Réponses: 6
    Dernier message: 09/06/2006, 23h30
  5. [VB6][DoVerb]Lancer automatiquement un objet OLE
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 06/11/2002, 13h29

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