Re: Newbie - delete item from collection
Geoff Taylor <[email protected]>
| Newsgroups | gmane.comp.windows.devel.dotnet.advanced |
|---|---|
| Message-ID | <003a01c9496a$ae3994a0$0aacbde0$@com> |
Hi, Thanks for that - it's good to know. Do you have a reference for this as a general behaviour, or is it just a compiler-specific optimisation? Cheers, Geoff > -----Original Message----- > From: Discussion of advanced .NET topics. [mailto:ADVANCED- > [email protected]] On Behalf Of Hewitt, Simon C. (Contractor) > Sent: 18 November 2008 10:43 > To: [email protected] > Subject: Re: [ADVANCED-DOTNET] Newbie - delete item from collection > > That's true for Arrays as the compiler 'knows' that .Length won't > change > during the enumeration. > Everything else will have its Count re-evaluated during each loop. > > Cheers > Simon > > -----Original Message----- > From: Discussion of advanced .NET topics. > [mailto:[email protected]] On Behalf Of Geoff Taylor > Sent: 18 November 2008 10:20 > To: [email protected] > Subject: Re: [ADVANCED-DOTNET] Newbie - delete item from collection > > I know it's a property. Tsk. ;) > > My confusion was around it being whether it was invoked in the loop at > all. > I was under the impression - I'm sure I read this somewhere back in the > .NET 1.0 or beta days - that a for loop like: > > for (int i = 0; i < list.Count; i++) > { > ... > } > > Was created in the IL as: > > int temp = list.Count; > for (int i = 0; i < temp; i++) > { > ... > } > > See what I mean now? > > I can't find any reference to this behaviour though, and I've just read > the relevant parts of the C# Language Specification and it's not there. > I even wrote it a simple program in Snippet Compiler to check. So it > looks like my understanding was hogswash. Sorry about that. > > Apologies for introducing confusion. Now, any idea where I got that > notion? > > Cheers, > > Geoff > > > -----Original Message----- > > From: Discussion of advanced .NET topics. [mailto:ADVANCED- > > [email protected]] On Behalf Of Eddie Lascu > > Sent: 17 November 2008 22:23 > > To: [email protected] > > Subject: Re: [ADVANCED-DOTNET] Newbie - delete item from collection > > > > Count is a property that returns the actual number of elements > > contained in the ArrayList so has to be reevaluated every time is > > invoked. > > > > -----Original Message----- > > From: Discussion of advanced .NET topics. > > [mailto:[email protected]] On Behalf Of Geoff > > Taylor > > Sent: Monday, November 17, 2008 5:06 PM > > To: [email protected] > > Subject: Re: [ADVANCED-DOTNET] Newbie - delete item from collection > > > > Really? I thought that was cached before the first iteration of the > > loop and not re-evaluated. Does it really evaluated Count each time > > through the loop? > > > > Geoff > > > > On 17 Nov 2008, at 21:04, Chris Anderson <[email protected]> wrote: > > > > >> (I'd also have expected it to throw an exception towards the end, > > >> because there are no longer _someList.Count items in the list.) > > > > > > Yes there are ;-) > > > _someList.Count will be decrementing as you remove items > > > > > > =================================== > > > View archives and manage your subscription(s) at > > > http://peach.ease.lsoft.com/archives > > > > =================================== > > View archives and manage your subscription(s) at > > http://peach.ease.lsoft.com/archives > > > > =================================== > > View archives and manage your subscription(s) at > > http://peach.ease.lsoft.com/archives > > =================================== > View archives and manage your subscription(s) at > http://peach.ease.lsoft.com/archives > > =================================== > View archives and manage your subscription(s) at > http://peach.ease.lsoft.com/archives =================================== View archives and manage your subscription(s) at http://peach.ease.lsoft.com/archives