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 :

Parcourir un objet Collection


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 66
    Par défaut Parcourir un objet Collection
    Bonjour,

    je pense que j'ai un petit souci de compréhension concernant le parcours d'un objet collection et j'aurai besoin de vos lumières.

    J'ai un objet collection "Dépenses" que j'instancie et que je remplit avec des objets "Dépense" qui ont leur champs propres.

    Je souhaite accéder à ces objets Dépense à l'intérieur de ma collection et pour cela j'exécute le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for (int i = 0; i < sDepenses.Count; i ++)
                {
                    Dépense value;
     
                    if (sDepenses is IEnumerable)
                    {
                        value = sDepenses.GetType().GetFields().GetValue(i).ToString();
                    }
                }
    J'obtient une erreur index en dehors des limites alors que mon objet Collection sDépenses contient deux dépenses.

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Quel est le type de ta collection sDepenses ? Un tableau, une ArrayList, une List(Of Depense) ... ?

    De toutes façons, tu peux utiliser une boucle foreach :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach (Depense d in sDepenses)
    {
        // faire quelque chose avec d
    }
    Et comme apparemment tu es débutant, un lien utile :
    http://tahe.developpez.com/dotnet/csharp/

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 66
    Par défaut
    C'est une classe héritée : public class Dépenses : System.Collections.CollectionBase

    Je test le foreach à la place et je te tiens au courant. Merci pour la réponse.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 66
    Par défaut
    Re-Bonsoir,

    donc avec le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    foreach (Dépense d in sDepenses)
                {
                    string value;
     
                    if (sDepenses is IEnumerable)
                    {
                        value = sDepenses.GetType().GetField(d.NomType).ToString() ;
                    }
                }
    J'obtiens un NullReferenceException alors que mon d se remplit bien avec les valeurs de la dépense et que mon d.NomType existe bien, voici l'erreur :

    La référence d'objet n'est pas définie à une instance d'objet...

    Je dois me tromper dans les paramètres de macollection.getType() mais je vois pas ou ...

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut

    Je ne comprends pas du tout ce que tu cherches à faire...

    Pas la peine de vérifier que "sDepenses is IEnumerable", c'est forcément le cas puisque Depenses hérite de CollectionBase. Ensuite, qu'est-ce que tu cherches à faire exactement avec cette instruction ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    value = sDepenses.GetType().GetField(d.NomType).ToString() ;
    Cette instruction signifie, grosso-modo, que tu prends le champ de la classe Dépenses dont le nom est d.NomType. Ca ne récupère pas la valeur du champ, seulement les informations de réflexion sur ce champ...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 66
    Par défaut
    En faite, j'ai besoin de stocker des objets dans une collection contenant des champs de plusieurs tables et pouvoir modifier les valeurs à l'intérieur ou y accéder.

    Je faisais des tests pour le moment avec un objet collection "dépenses" qui contient des objets "dépense". La classe collection se remplit correctement.

    Concrètement, j'ai une table dépense et une table payeurs qui indique s'ils sont concernés par une dépense en particulier et s'ils sont concernés, s'ils l'ont payé (partage de la somme totale de la dépense entre les personnes concernées). Je souhaite remplir ma classe collection avec les valeurs de ces deux tables dynamiquement et pouvoir accéder aux champs de ma collection pour pouvoir les modifier en code par calcul et souhaite réinsérer ces nouvelles valeurs dans mes tables.

    J'aimerai remplir un GridView avec les valeurs de ma collection et pouvoir modifier ces valeurs directement dans mon GridView avant de les réengistrer dans ma collection et ainsi dans mes tables.

    Je pense que les classes collections sont effectivement la solution à mon problème et je suis en train de consulter un cours sur les collections pour essayer d'y voir un peu plus clair. J'avoue que c'est une leçon lors de ma formation qui n'a pas été correctement assimilé

Discussions similaires

  1. Parcourir un objet
    Par ragnarokr dans le forum C#
    Réponses: 17
    Dernier message: 01/06/2014, 17h42
  2. Utiliser l'objet collection
    Par viavba dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/01/2009, 11h09
  3. Parcourir un objet
    Par Manitobaa dans le forum Windows Forms
    Réponses: 1
    Dernier message: 30/10/2008, 16h43
  4. parcourir un objet
    Par Jasmine80 dans le forum Langage
    Réponses: 9
    Dernier message: 13/06/2008, 11h03
  5. Comment creer une Classe d'un objet Collection ?
    Par grenouillesiverte dans le forum VB.NET
    Réponses: 2
    Dernier message: 16/02/2007, 13h16

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