title: LINQ's ForEach on HashSet?
body: <p>I am curious as to what restrictions necessitated the design decision to not have HashSet's be able to use LINQ's ForEach query.</p>
  
  <p>What's really going on differently behind the scenes for these two implementations:</p>
  
  <pre><code>var myHashSet = new HashSet&lt;T&gt;;
  foreach( var item in myHashSet ) { do.Stuff(); }
  </code></pre>
  
  <p>vs </p>
  
  <pre><code>var myHashSet = new HashSet&lt;T&gt;;
  myHashSet.ForEach( item =&gt; do.Stuff(); }
  </code></pre>
  
  <p>I'm (pretty) sure that this is just because HashSet does not implement IEnumerable -- but what is a normal ForEach loop doing differently that makes it more supported by a HashSet?</p>
  
  <p>Thanks</p>