title: Why doesn't .NET have a bidirectional enumerator?
body: <p>It's been asked a couple of times on SO how you can implement a bidirectional enumerator (<a href="https://stackoverflow.com/questions/191788/two-directional-list-enumerator-in-net">here</a>, <a href="https://stackoverflow.com/questions/451099/implementing-a-bidirectional-enumerator-in-c">here</a>). My question is not <em>how</em> (which is trivial for most cases), but <em>why</em> no such type exists in the .NET platform.</p>
  
  <pre><code>public interface IBidirectionalEnumerator&lt;T&gt; : IEnumerator&lt;T&gt;
  {
      bool MovePrev();
  }
  </code></pre>
  
  <p>Obviously, there are many collection types which can't implement this, as <code>MoveNext()</code> is destructive or changes the state of the underlying collection. But conversely, many types <em>can</em> implement this trivially (<code>List</code>, <code>IList</code>, <code>LinkedList</code>, <code>array</code>).</p>
  
  <p>Why does no such type exist?</p>