7
votes

Récupérer des données à partir d'une arrayliste VB.NET d'objets

J'essaie de récupérer la valeur correcte d'une arrachelist d'objets (Cadre .NET 1.1):

J'ai le suivant défini: P>

MsgBox(AlList(5).ItemNo)


0 commentaires

4 Réponses :


5
votes

Mettez le code suivant: xxx

intérieur la boucle qui ajoute Anitemobj à la liste.

Lorsque vous ajoutez un type de référence à une liste, vous ne devez ajouter que la référence, pas la valeur.

Cela signifie que si vous ajoutez 10 fois la même instance à une liste, il ajoutera 10 fois la même référence à la liste. Mais si, après que vous avez toujours une référence à cette instance, vous pouvez modifier ses propriétés et que les 10 entrées du point de liste sur la même référence en mémoire, toutes les 10 entrées seront modifiées.


0 commentaires

1
votes

Donc, vous avez:

Dim AnItemObj As ItemInfo
For ...
    AnItemObj = New ItemInfo
    AnItemObj.ItemNo = AFile.RecordId
    AnItemObj.ItemType = temp
    AlList.Add(AnItemObj)
Next


0 commentaires

0
votes

Créez-vous une nouvelle instance d'itemInfo pour chaque incrément de la boucle?


0 commentaires

0
votes

Je ne peux pas voir votre code de boucle complète mais j'imagine que la cause ne paramètre pas anitemobj vers un nouvel objet itemInfo. Donc, vous venez de finir par modifier le même objet et en ajoutant la liste de la liste (tous les éléments du point de liste sur le même objet).

AnItemObj = New ItemInfo()
AnItemObj.ItemNo = AFile.RecordId
AnItemObj.ItemType = temp
AlList.Add(AnItemObj)


0 commentaires