Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

for each et remove

2 réponses
Avatar
fred
Bonjour ,

Est ce que quelqu'un peut me donner la version correct du code ci dessous;

For Each Com As clsSocketCommunication In Me.SocketCommunicationCollection

If Com.IsObsolete Then

Me.SocketCommunicationCollection.Remove(Com)

End If

Next

A l'evidence celui ci ne marche pas, mais je vois pas comment faire
differement.

Merci pour votre aide



Fred

2 réponses

Avatar
Patrice
L'idée est d'accéder à la collection via un index allant de Count-1 à 0 (For
i As Integer=MaConnection.Count-1 to 0 Step -1)

Le problème est que si on parcours la collection de l'élément 0 à l'élément
Count-1, la suppression d'un élément modifie l'index de tous les éléments
qui suivent et qui n'ont pas encore été traités ce qui pose donc problème
(que ce soit soit avec un index ou un "for each").

En parcourant la sélection depuis la fin, la suppression d'un élément n'a
aucun impact sur les éléments précédents ce qui permet donc de parcourir la
collection sans problème tout en y supprimant des éléments...

--
Patrice

"fred" a écrit dans le message de groupe de discussion :

Bonjour ,

Est ce que quelqu'un peut me donner la version correct du code ci dessous;

For Each Com As clsSocketCommunication In Me.SocketCommunicationCollection

If Com.IsObsolete Then

Me.SocketCommunicationCollection.Remove(Com)

End If

Next

A l'evidence celui ci ne marche pas, mais je vois pas comment faire
differement.

Merci pour votre aide



Fred





Avatar
fred
Bonjour et merci pour la solution je vais iterer sur l'index par le bas.
Frederic
"Patrice" <http://www.chez.com/scribe/> a écrit dans le message de news:

L'idée est d'accéder à la collection via un index allant de Count-1 à 0
(For i As Integer=MaConnection.Count-1 to 0 Step -1)

Le problème est que si on parcours la collection de l'élément 0 à
l'élément Count-1, la suppression d'un élément modifie l'index de tous les
éléments qui suivent et qui n'ont pas encore été traités ce qui pose donc
problème (que ce soit soit avec un index ou un "for each").

En parcourant la sélection depuis la fin, la suppression d'un élément n'a
aucun impact sur les éléments précédents ce qui permet donc de parcourir
la collection sans problème tout en y supprimant des éléments...

--
Patrice

"fred" a écrit dans le message de groupe de discussion :

Bonjour ,

Est ce que quelqu'un peut me donner la version correct du code ci
dessous;

For Each Com As clsSocketCommunication In
Me.SocketCommunicationCollection

If Com.IsObsolete Then

Me.SocketCommunicationCollection.Remove(Com)

End If

Next

A l'evidence celui ci ne marche pas, mais je vois pas comment faire
differement.

Merci pour votre aide



Fred