Need help understanding C# yield in IEnumerable
<p>i am reading C# 2010 Accelerated. i dont get what is <code>yield</code></p>

<blockquote>
  <p>When GetEnumerator is called, the code
  in the method that contains the yield
  statement is not actually  executed at
  that point in time. Instead, the
  compiler generates an enumerator
  class, and that class  contains the
  yield block code</p>
</blockquote>

<pre><code>public IEnumerator&lt;T&gt; GetEnumerator() { 
    foreach( T item in items ) { 
        yield return item; 
    } 
} 
</code></pre>

<p>i also read from <a href="http://stackoverflow.com/questions/317462/some-help-understanding-yield">Some help understanding “yield”</a></p>

<blockquote>
  <p>yield is a lazy producer of data, only
  producing another item after the first
  has been retrieved, whereas returning
  a list will return everything in one
  go.</p>
</blockquote>

<p>does this mean that each call to <code>GetEnumerator</code> will get 1 item from the collection? so 1st call i get 1st item, 2nd, i get the 2nd and so on ... ?</p>
