title: Does foreach evaluate the array at every iteration?
body: <p>I want to create a <code>foreach</code> which skips the first item. I've seen elsewhere that the easiest way to do this is to use <code>myCollection.Skip(1)</code>, but I have a question:</p>
  
  <p>The MSDN documentation on <code>.Skip()</code> describes that it "Bypasses a specified number of elements in a sequence and then returns the remaining elements." Does this mean that a call to</p>
  
  <pre><code>foreach(object i in myCollection.Skip(1))
  { ... }
  </code></pre>
  
  <p>Would the program have to perform <code>.Skip(1)</code> every time the <code>foreach</code> iterates? Or does <code>foreach</code> (somewhat like a <code>switch</code>) not require multiple evaluations of the array?</p>
  
  <p>Would it be more efficient to create a dummy <code>var _dummy = myCollection.Skip(1)</code> and iterate on this instead?</p>