Problème de références

Résolu
cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007 - 25 juin 2006 à 11:38
cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007 - 25 juin 2006 à 15:32
Bonjour

J'aimerai pouvoir assigner à une variable la référence d'un objet de l'arraylist afin de pouvoir modifier cet objet grâce à cette variable. Le problème, c'est que les structures sont des variables par valeur et j'ai beau chercher, je ne vois pas la solution. En gros, je voudrais faire :
ObjetDeLArray=List(1)
ObjetDeLArray.name="Nouveau nom"
Et que cela modifie List(1).name en "Nouveau nom"
Merci d'avance ! Voici un code exemple


Public Structure Struc
Dim Name As String
End Structure

Dim List As New ArrayList

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim NewStruc As New Struc
NewStruc.Name = "test1"
List.Add(NewStruc)
NewStruc = New Struc
NewStruc.Name = "test2"
List.Add(NewStruc)
End Sub


@Z3RtY25 ==

6 réponses

Utilisateur anonyme
25 juin 2006 à 14:58
Ah, désolé, j'avais mal compris

Utilise une class et non une structure :


Public

Class
Struc

  
Public
Name
As

String

End

Class

Dim
List
As

New
System.Collections.Generic.List(
Of
Struc)

Private

Sub
Form1_Load(
ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs)
Handles

MyBase
.Load

  
Dim
Var
As

New
Struc

  List.Add(Var)

  Var.Name =
"Toto"

  System.Windows.Forms.MessageBox.Show(
"Var.Name = "
& Var.Name & vbNewLine &
"List.Item(0).Name = "
& List.Item(0).Name)

End

Sub





Kenji

Merci de lire le règlement (vivement conseillé voir obligatoire).

/FONT>
3
cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
25 juin 2006 à 11:58
Bon ça mal pris la mise en page, j'étais avec Opera...
Vous pouvez trouver une copie du post ici :
http://scripts.epiknet.org/wall.php?id=580


@Z3RtY25 ==
0
Utilisateur anonyme
25 juin 2006 à 12:20
Salut,

Je sais pas si c'est un bug de cs, mais ca manque de retours à la ligne.
Si tu veut faire un Array de ta structure, tu peut faire si tu travaille sous vs2005 :


Dim
List
As

New
System.Collections.Generic.List(
Of
Struc)



Sinon si t'est sur vs2003, tu peut reprendre la class Array et remplacer le type object en type ta structure.


Public

Class
StructArray

  
Inherits
System.Collections.ArrayList

  
Public

Shadows

Function
Add(
ByVal
value
As
Struc)
As

Integer

    
Return

MyBase
.Add(value)

  
End

Function

  
Default

Public

Shadows

Property
Item(
ByVal
index
As

Integer
)
As
Struc

    
Get

      
Return

CType
(
MyBase
.Item(index), Struc)

    
End

Get

    
Set
(
ByVal
value
As
Struc)

      
MyBase
.Item(index) = value

    
End

Set

  
End

Property

End

Class



Mais le mieux c'est que tu la fasse toi même (si t'est sur vs2003) avec


Dim
List()
As
Struc





Kenji

Merci de lire le règlement (vivement conseillé voir obligatoire).

/FONT>
0
cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
25 juin 2006 à 14:25
Merci pour ta réponse !
Mais je ne peux toujours pas faire une variable ayant comme valeur la référence un objet de la liste, si je fait Var as Struc=list(1), modifier var.name ne modifie pas list(1).name. Une idée ? :-D


@Z3RtY25 ==
0

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

Posez votre question
cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
25 juin 2006 à 14:26
J'oubliai, je suis sous VB2005

@Z3RtY25 ==
0
cs_azerty25 Messages postés 1114 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 6 mai 2007
25 juin 2006 à 15:32
Merci Kenji !!! T'es mon héro !!! lol.
Le pire c'est qu'utiliser une classe m'avait effleuré l'esprit mais va savoir pourquoi, j'y ai pas fait attention !
Bonne journée, merci encore


@Z3RtY25 ==
0
Rejoignez-nous