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] Assignation d'un élément d'une liste (structure)


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    286
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 286
    Par défaut [VB.NET] Assignation d'un élément d'une liste (structure)
    Toujours le même probleme mais en différent ...

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Structure ArretsGPS
        Public duree As Integer
        ...
    End Structure
     
    Dim azaz As New List(Of ArretsGPS)
    Dim valArret As ArretsGPS
    With valArret
        .duree = 2
    End With
    azaz.Add(valArret)
    azaz(0).duree = 0 ' -> "Cette expression est une valeur et ne peut donc pas être la cible d'une assignation."

    Le compilateur affiche une erreur (sans compiler) sur la dernière ligne et je n'arrive pas a comprendre pourquoi.

    Peut-on m'aider ?
    merci

  2. #2
    Membre éclairé

    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    286
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 286
    Par défaut
    Apres pas mal de recherches, de prise de tete, etc .. il semblerait que j'ai trouvé une méthode qui fonctionne ...

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Class CArretGPS
        Public duree As Integer
        ...
    End Class
     
    Dim azaz As New List(Of CArretGPS)
    Dim valArret As New CArretGPS
    With valArret
        .duree = 2
    End With
    azaz.Add(valArret)
    azaz(0).duree = 0

    Je n'ai pas vraiment compris pourquoi une classe passait mieux qu'une structure (valeur / référence), mais je n'ai plus d'erreur, ni avant la compilation, ni a l'éxécution ...

    La source qui m'a bien aidé : http://www.thescripts.com/forum/thread453112.html

    Si des personnes ont une explication plus claire ...

  3. #3
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    mon explication :

    La stucture est un type valeur, donc quand tu lui accede à partir de la List tu obtient une copie, donc en fait tu vas changer la valeur de la copie et non pas de la structure inserée dans la liste, et puisque le compilo est assez intelligent il a prévu donc cette maladresse

  4. #4
    Membre éclairé

    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2003
    Messages
    286
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 286
    Par défaut
    mouais

    Que je ne dise pas de bétises : .net est bien le seul a avoir une gestion des structures comme ca, non ?
    Parce que pour moi, je ne trouve pas ca très clair et pratique ... et je ne suis jamais tombé sur ce genre de cas dans d'autres langages

    merci

  5. #5
    Membre Expert Avatar de Mose
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 143
    Par défaut
    Non non, c'est pas spécifique au C#.
    En C++ c'est pareil.
    En Java aussi j'imagine, sinon je ne vois pas bien à quoi ça sert d'avoir des structures et des classes.

    Pourquoi tu fais des structures et pas des classes ?

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Salut,

    .Net est un des "langages" ou on peut spécifier explicitement la gestion des variables par valeur ou par référence lors de la définition du type: struct = par valeur , class = par référence. On peut trouver ça étrange et déroutant mais en tout ça fait parti des choses à savoir qd on utilise un langage .

    C++ n'est pas pareil, en C++ tout est traité par valeur, struct ou class même combat. Pour avoir des références il faut utiliser le symbole "&" lors de la déclaration d'une variable (ou bien utiliser des pointeurs pour obtenir qque chose d'équivalent).
    En Java il me semble qu'au tout début même les types de base (entier, caractère etc...) étaient gérés par référence et le programmeur ne pouvait pas créer de types valeur. Maintenant les types de base sont des types valeur, je crois qu'on peut définir des types valeur également. Qu'un spécialiste java me corrige si je dis des bêtises .

Discussions similaires

  1. CSLA.Net : Impossible de supprimer un élément d'une liste
    Par dogua dans le forum Accès aux données
    Réponses: 4
    Dernier message: 11/06/2013, 17h18
  2. [vb.net] Ajustement automatique des éléments d'une form
    Par solid_sneak06 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/03/2009, 18h21
  3. [CSS]Changer l'interligne des éléments d'une liste à puces
    Par khany dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 21/03/2005, 13h57
  4. Réponses: 2
    Dernier message: 11/01/2005, 14h10
  5. [IDE][VS.NET 2003] Y a-t-il une liste des racourcis ?
    Par 404Found dans le forum Contribuez
    Réponses: 2
    Dernier message: 22/06/2004, 20h20

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