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

VB.NET Discussion :

[vb.net][collection]Comment affecter une valeur d'un élément d'une collection de structure


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut [vb.net][collection]Comment affecter une valeur d'un élément d'une collection de structure
    Bonjour,

    Je rencontre un soucis pour affecter une valeur à une collection de structure :

    Ma structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Structure Calendrier_mois
            Dim nom_mois_annee As String
            Dim nbJourMois As Integer
            Dim jour_mois As System.Collections.Generic.List(Of Calendrier_jour)
            'Dim jour_mois() As Calendrier_jour
        End Structure
    Ma collection

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public calendrierMensuel As New System.Collections.Generic.List(Of Calendrier_mois)
    Et lorsque j'essaye d'affecter une valeur dans ma collection :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    calendrierMensuel(pos).nbJourMois = calendrierMensuel(pos).nbJourMois + 1
    j'ai une erreur :

    Cette expression est une valeur et ne peut donc pas être la cible d'une assignation.
    Comment modifier la valeur de nbJourMois de ma collection de structure?

    Merci d'avance pour votre aide et vos remarques

    ++

  2. #2
    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
    Deux façons de procéder

    • Soit tu utilises une classe au lieu d'une structure (utilisation d'un type référence au lieu d'un type valeur).
    • Soit tu récupères l'objet de la liste, tu le modifies et enfin tu le remets dans la liste


    Si tu définis une collection de structure, alors
    renverra une copie (type valeur), ce qui fait que toute assignation ne modifiera pas l'objet dans la collection mais sa copie. D'où l'erreur levée par la compilation.

    Si tu utilises une classe, ton code actuel est bon, mais on peut simplifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    calendrierMensuel(pos).nbJourMois += 1
    Si tu restes sur une structure il faudrait faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Calendrier_mois cal = calendrierMensuel(pos)
    cal.nbJourMois += 1
    calendrierMensuel(pos) = cal

  3. #3
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Je dis peut être une bêtise, mais dans ta déclaration de structure, si tu remplaces Dim par Public. Tu devrais y avoir accès comme tu le souhaitais.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    bonjour

    et merci pour ta réponse.

    J'ai du mal avec ces histoires de passage de valeur par référence et par valeur.

    Donc je vais passer par une classe pour résoudre le soucis.

    j'avais déjà commencer à passer mes structures en classe autant continuer.

    Merci pour ton explication

    ++

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Points : 309
    Points
    309
    Par défaut
    bonjour

    J'ai donc bien passer mes structures en classe et plus de soucis.

    merci pour vos réponse.

    Post résolu

    ++

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

Discussions similaires

  1. Réponses: 21
    Dernier message: 05/02/2015, 11h26
  2. Réponses: 20
    Dernier message: 02/05/2010, 16h56
  3. [XL-2000] Remplir une valeur dans cellule à partir d'une valeur precise d'un fichier texte
    Par cactus666 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/01/2010, 10h31
  4. Réponses: 2
    Dernier message: 17/05/2006, 21h35
  5. [VB.NET]SourceGrid et affectation de valeurs dans une String
    Par Bourbaky dans le forum Windows Forms
    Réponses: 1
    Dernier message: 01/03/2006, 20h41

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