Re: generic List<>
Peter Ritchie <[email protected]>
| Newsgroups | gmane.comp.windows.devel.dotnet.cx |
|---|---|
| Message-ID | <LISTSERV%[email protected]> |
Only removal of collection items while using the IEnumerator interface is
not supported. You can enumerate a collection in other ways, without
creating a new collection and copying a bunch of references.
For example:
for (int i = (myObjects.Count - 1); i >= 0; --i)
{
myObjects mo = myObjects[i];
if (mo.CanBeRemoved)
{
myObjects.Remove(mo);
}
}
On Wed, 30 Aug 2006 16:06:31 +0200, Efran Cobisi <[email protected]>
wrote:
>Nope. By design you are not allowed to make any changes to the
>collection you are iterating.
>The workaround for this depends on the situation. For most scenarios,
>you could just copy the references of the objects you wish to be deleted
>in another collection and then, while iterating the latter, delete these
>objects from the former.
>
>List<myObject> myTemp = new List<myObject>();
>
>foreach (MyObject mo in myObjects)
>{
> if (mo.CanBeRemoved==true)
> myTemp.Add(mo);
>}
>
>foreach (MyObject mo in myTemp)
> myObjects.Remove(mo);
>
>
>HTH
>
>Efran Cobisi, cobisi.com
>
>Peter Osucha wrote:
>> I have a generic List<myObject> collection 'myObjects'. MyObject
instances
>> have a bool property 'CanBeRemoved'.
>>
>> But apparently, it is invalid to
>>
>> foreach (MyObject mo in myObjects)
>> {
>> if (mo.CanBeRemoved==true) myObjects.Remove(mo);
>> }
>>
>> Is there a way to remove items from such collection while looping
through
>> the collection?
>>
>> Peter
>>
>> ===================================
>> This list is hosted by DevelopMentor® http://www.develop.com
>>
>> View archives and manage your subscription(s) at
http://discuss.develop.com
>>
>
>===================================
>This list is hosted by DevelopMentor® http://www.develop.com
>
>View archives and manage your subscription(s) at
http://discuss.develop.com
You're on
===================================
This list is hosted by DevelopMentor® http://www.develop.com
View archives and manage your subscription(s) at http://discuss.develop.com