title: Immutable set in .NET
body: <p>Does the .NET BCL have an immutable Set type?  I'm programming in a functional dialect of C# and would like to do something like</p>
  
  <pre><code>new Set.UnionWith(A).UnionWith(B).UnionWith(C)
  </code></pre>
  
  <p>But the best I can find is <code>HashSet.UnionWith</code>, which would require the following sequence of calls:</p>
  
  <pre><code>HashSet composite = new HashSet();
  composite.UnionWith(A);
  composite.UnionWith(B);
  composite.UnionWith(C);
  </code></pre>
  
  <p>This use is highly referentially opaque, making it hard to optimize and understand.  Is there a better way to do this without writing a custom functional set type?</p>