<p>There are apparently many ways to iterate over a collection. Curious if there are any differences, or why you'd use one way over the other.</p>

<p>First type:</p>

<pre><code>List&lt;string&gt; someList = &lt;some way to init&gt;
foreach(string s in someList) {
   &lt;process the string&gt;
}
</code></pre>

<p>Other Way:</p>

<pre><code>List&lt;string&gt; someList = &lt;some way to init&gt;
someList.ForEach(delegate(string s) {
    &lt;process the string&gt;
});
</code></pre>

<p>I suppose off the top of my head, that instead of the anonymous delegate I use above, you'd have a reusable delegate you could specify...</p>

I guess the
```
someList.ForEach()
```
call could be easily parallelized whereas the normal
```
foreach
```
is not that easy to run parallel.
You could easily run several different delegates on different cores, which is not that easy to do with a normal
```
foreach
```
.
Just my 2 cents