OVH Cloud OVH Cloud

Problème de ArrayList

2 réponses
Avatar
Bernard Bourée
J'ai une classe EntSor définie (voir code ) avec une procédure Sub Définit
qui définit plusieurs valeur de cette classe.

J'ai ensuite défini une Arraylist avec
Dim colEntSor As New ArrayList()

le code suivant met la même série de valeur dans toute l'arraylist:

EntSor.Définit("PAAE", "bar", 0, True) : colEntSor.Add(EntSor)

EntSor.Définit("TAAE", "°C", 0, True) : colEntSor.Add(EntSor)

EntSor.Définit("QAAE", "kg/s", 0, True) : colEntSor.Add(EntSor)

EntSor.Définit("XVAE", "%", 0, True) : colEntSor.Add(EntSor)

C'est à dire que la dernière ligne du code met les valeurs de cette ligne
dans cahque élément de la collection.

Que se passe-t-il ?



Merci

Bernard

==============================================

Public Class EntSor

Private mNomVal As String

Private mNomUnit As String

Private mDonnées As Boolean

Private mValeur As Decimal

Public Property NomVal() As String

Get

Return mNomVal

End Get

Set(ByVal Value As String)

mNomVal = Value

End Set

End Property

Public Property NomUnit() As String

Get

Return mNomUnit

End Get

Set(ByVal Value As String)

mNomUnit = Value

End Set

End Property

Public Property Données() As Boolean

Get

Return mDonnées

End Get

Set(ByVal Value As Boolean)

mDonnées = Value

End Set

End Property

Public Property Valeur() As Decimal

Get

Return mValeur

End Get

Set(ByVal Value As Decimal)

mValeur = Value

End Set

End Property

Public Sub Définit(ByVal sNomVal As String, _

ByVal sNomunité As String, _

ByVal dVal As Decimal, _

ByVal bDonnées As Boolean)

With Me

.NomVal = sNomVal

.NomUnit = sNomunité

.Valeur = dVal

.Données = bDonnées

End With

End Sub

End Class


--
Bernard Bourée
bernard@bouree.net

2 réponses

Avatar
Fred
Bonjour,
C'est normal, tu crois avoir 4 objets EntSor différents dans ton tableau
alors que c'est toujours le même.
Si tu viens du monde VB6 peut-être ne connais-tu pas la notion de pointeur
ou d'adresse.
Imagine que dans ton tableau tu places l'adresse mémoire de ton objet.
Tu as donc bien 4 éléments de tableau mais il s'agit de 4 fois l'adresse du
même objet EntSort.
J'espère avoir été à peu près clair !


"Bernard Bourée" a écrit dans le message de news:

J'ai une classe EntSor définie (voir code ) avec une procédure Sub


Définit
qui définit plusieurs valeur de cette classe.

J'ai ensuite défini une Arraylist avec
Dim colEntSor As New ArrayList()

le code suivant met la même série de valeur dans toute l'arraylist:

EntSor.Définit("PAAE", "bar", 0, True) : colEntSor.Add(EntSor)

EntSor.Définit("TAAE", "°C", 0, True) : colEntSor.Add(EntSor)

EntSor.Définit("QAAE", "kg/s", 0, True) : colEntSor.Add(EntSor)

EntSor.Définit("XVAE", "%", 0, True) : colEntSor.Add(EntSor)

C'est à dire que la dernière ligne du code met les valeurs de cette ligne
dans cahque élément de la collection.

Que se passe-t-il ?



Merci

Bernard

============================================= >
Public Class EntSor

Private mNomVal As String

Private mNomUnit As String

Private mDonnées As Boolean

Private mValeur As Decimal

Public Property NomVal() As String

Get

Return mNomVal

End Get

Set(ByVal Value As String)

mNomVal = Value

End Set

End Property

Public Property NomUnit() As String

Get

Return mNomUnit

End Get

Set(ByVal Value As String)

mNomUnit = Value

End Set

End Property

Public Property Données() As Boolean

Get

Return mDonnées

End Get

Set(ByVal Value As Boolean)

mDonnées = Value

End Set

End Property

Public Property Valeur() As Decimal

Get

Return mValeur

End Get

Set(ByVal Value As Decimal)

mValeur = Value

End Set

End Property

Public Sub Définit(ByVal sNomVal As String, _

ByVal sNomunité As String, _

ByVal dVal As Decimal, _

ByVal bDonnées As Boolean)

With Me

.NomVal = sNomVal

.NomUnit = sNomunité

.Valeur = dVal

.Données = bDonnées

End With

End Sub

End Class


--
Bernard Bourée





Avatar
Bernard Bourée
Merci c'est très clair!

--
Bernard Bourée

"Fred" a écrit dans le message de
news:
Bonjour,
C'est normal, tu crois avoir 4 objets EntSor différents dans ton tableau
alors que c'est toujours le même.
Si tu viens du monde VB6 peut-être ne connais-tu pas la notion de pointeur
ou d'adresse.
Imagine que dans ton tableau tu places l'adresse mémoire de ton objet.
Tu as donc bien 4 éléments de tableau mais il s'agit de 4 fois l'adresse


du
même objet EntSort.
J'espère avoir été à peu près clair !


"Bernard Bourée" a écrit dans le message de news:

> J'ai une classe EntSor définie (voir code ) avec une procédure Sub
Définit
> qui définit plusieurs valeur de cette classe.
>
> J'ai ensuite défini une Arraylist avec
> Dim colEntSor As New ArrayList()
>
> le code suivant met la même série de valeur dans toute l'arraylist:
>
> EntSor.Définit("PAAE", "bar", 0, True) : colEntSor.Add(EntSor)
>
> EntSor.Définit("TAAE", "°C", 0, True) : colEntSor.Add(EntSor)
>
> EntSor.Définit("QAAE", "kg/s", 0, True) : colEntSor.Add(EntSor)
>
> EntSor.Définit("XVAE", "%", 0, True) : colEntSor.Add(EntSor)
>
> C'est à dire que la dernière ligne du code met les valeurs de cette


ligne
> dans cahque élément de la collection.
>
> Que se passe-t-il ?
>
>
>
> Merci
>
> Bernard
>
> ============================================= > >
> Public Class EntSor
>
> Private mNomVal As String
>
> Private mNomUnit As String
>
> Private mDonnées As Boolean
>
> Private mValeur As Decimal
>
> Public Property NomVal() As String
>
> Get
>
> Return mNomVal
>
> End Get
>
> Set(ByVal Value As String)
>
> mNomVal = Value
>
> End Set
>
> End Property
>
> Public Property NomUnit() As String
>
> Get
>
> Return mNomUnit
>
> End Get
>
> Set(ByVal Value As String)
>
> mNomUnit = Value
>
> End Set
>
> End Property
>
> Public Property Données() As Boolean
>
> Get
>
> Return mDonnées
>
> End Get
>
> Set(ByVal Value As Boolean)
>
> mDonnées = Value
>
> End Set
>
> End Property
>
> Public Property Valeur() As Decimal
>
> Get
>
> Return mValeur
>
> End Get
>
> Set(ByVal Value As Decimal)
>
> mValeur = Value
>
> End Set
>
> End Property
>
> Public Sub Définit(ByVal sNomVal As String, _
>
> ByVal sNomunité As String, _
>
> ByVal dVal As Decimal, _
>
> ByVal bDonnées As Boolean)
>
> With Me
>
> .NomVal = sNomVal
>
> .NomUnit = sNomunité
>
> .Valeur = dVal
>
> .Données = bDonnées
>
> End With
>
> End Sub
>
> End Class
>
>
> --
> Bernard Bourée
>
>
>