It is just not important enough to worry in most cases. As Eric points out, there may be some cases where this is important, but they are quite small and far from my experience.
If you do hundreds of thousands of foreach loops, presumably you are doing the actual work in these loops. This will almost certainly be much more important than the iterators themselves.
Note that using foreach over an array (known to be an array at compile time, that is) does not use IEnumerable<T> in any case - it uses direct indexing. I would not change my code based on this, though.
As before, if you are concerned about performance, you need to measure and profile it. Bottlenecks are almost never expected.
Jon skeet
source share