Foreach

The C# statement foreach is a convenient way to traverse an enumerable collection, but because it uses an enumerator it is also more expensive than a normal for loop.

The following code uses a trivial foreach loop:

int k = 0;
foreach loopforeach (int j in list)
{
k = j;
}

This code uses a for loop instead:

int k = 0;
int listLength = list.Count;
for (int i = 0; i < listLength; i++)
{
k = list[i];
}

For completeness, I also tested a loop that counts backwards to zero, rather than forwards to the list count:

int k = 0;
for (int i = list.Count - 1; i >= 0; i--)
{
k = list[i];
}

I used a List<int> with 1000 integers. On my machine, the results were:

Test

Time taken (ticks)

foreach—1000 List<int> accesses

168

for 1000—List<int> accesses

Get ASP.NET Site Performance Secrets now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.