Problème avec une List(Of

Résolu
cs_pingouin84k Messages postés 68 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 9 janvier 2011 - 15 juil. 2009 à 18:34
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 - 16 juil. 2009 à 13:08
Bonjour,

J'ai une structure Struct, ensuite je definit une liste de cette structure en faisant :
Dim MaListe as New List(Of Struct)

Ensuite je créé plusieurs item dans la liste au moyen de .Add
Mais ensuite quand je veux modifier des variables dans l'un des item de la liste, j'ai droit à l'erreur :

Cette expression est une valeur et ne peut donc pas être la cible d'une assignation.



Si quelqu'un sait pourquoi je peux pas modifier les items dans ma liste, je suis preneur !
Merci d'avance.

5 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
16 juil. 2009 à 01:22
Bonsoir,

Utilise une classe avec des propriétés plutot qu'une structure, ainsi tu pourras appeler les propriétés des éléments de ta list (Of T) directement.

++
                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
15 juil. 2009 à 22:22
Salut,

Regardes la page suivante et tu auras une explication.
Avec le peu d'explication qu'on a on peut guere t'aider.

Mais un véritable exemple.
0
cs_pingouin84k Messages postés 68 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 9 janvier 2011
15 juil. 2009 à 23:15
Hum, j'ai déjà regarder cette page et ne m'a rien appris...

Ce code illustre mon problème :


Public Structure Truc
Dim Variable1 As Single
End Structure

Public ListeDeTrucs as New List(Of Truc)

Public Sub Routine()

Dim TrucTemp As New Truc
TrucTemp.Variable1 = 123

ListeDeTrucs.Add(TrucTemp)
ListeDeTrucs.Add(TrucTemp)
ListeDeTrucs.Add(TrucTemp)
ListeDeTrucs.Add(TrucTemp)

'j'ai donc dans ma liste 4 trucs
'je vais tenté de modifier la valeur Variable1 de l'un des items de la liste

ListeDeTrucs(2).Variable1 = 321 '----> engendre l'erreur
ListeDeTrucs.Item(2).Variable1 = 321 '----> engendre l'erreur


'ce qui marche mais qui me satisfait pour la lourdeur du code

TrucTemp = ListeDeTrucs(2)
TrucTemp .Variable1 = 321
ListeDeTrucs(2) = TrucTemp


End Sub
0
cs_pingouin84k Messages postés 68 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 9 janvier 2011
16 juil. 2009 à 12:39
Et sinon personne à une explication à ça ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
16 juil. 2009 à 13:08
Une explication à quoi ? Ce n'est pas une erreur ou un bogue, c'est simplement que tu fais une erreur de syntaxe, ce qui ne se fait pas ne se fait pas, il n'y a pas d'explication !

Un structure n'est pas une classe, faut pas confondre.

Classe.Propriété et Structure.Variable c'est 2 choses différentes...

MaListe.Item(x).Variable1 sera ReadOnly, pas de possibilité d'écriture

je te l'ai dis, tu peux remplacer ta structure par une classe avec des propriétés, après tout dépend de ce que tu fais de ta structure, une structure est une variable étendue, faite pour être passé en paramètre ou injecté dans un fichier par exemple, si tu t'en sert simplement pour stocker des variables je ne vois pas l'intérêt, autant faire une classe "Item" et une list(Of Item).

++
                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
0
Rejoignez-nous