On Sun, Nov 23, 2008 at 10:48 AM, Sam S E <[EMAIL PROTECTED]> wrote: > Jarrett Billingsley Wrote: > >> On Sat, Nov 22, 2008 at 11:40 PM, Sam S E <[EMAIL PROTECTED]> wrote: >> > Does foreach use delegates? Isn't that unnecessary overhead? >> > --Sam >> >> It does use delegates, for iterating over most types. When iterating >> over arrays, the compiler turns it into a sort of for loop instead. >> >> Is it unnecessary overhead? It's not always as fast as it could be, >> but unless someone can figure out some other way of implementing it, >> it's pretty much the best we can get. >> >> How about iterator objects, like in C++ or Java? Are they unnecessary >> overhead? ;) > > Why not just use a normal for loop; wouldn't it be almost as simple as token > substitution? By 'most types,' do you mean associative arrays or am I > forgetting something? As a mainly C(++) programmer, I don't use iterators > when I don't need to. I don't even use classes when I don't need to.
How do you use a for loop to iterate over an associative array whose implementation is hidden, or a binary tree, or any arbitrary container, or a sequence or words in a file, or the zipped contents of two lists, or... The point of foreach isn't performance, it's flexibility and abstraction. As long as you can make an opApply or function which takes a delegate, you can use the foreach loop with it. Not everything is an array.
