 <p>I'm not sure where you quoted that from, it doesn't appear in the documentation at all. To actually quote from the <a href="https://msdn.microsoft.com/library/bb359438%28v=vs.110%29.aspx" rel="nofollow">documentation</a>:</p> <blockquote> <p>The <code>HashSet&lt;T&gt;</code> class is based on the model of mathematical sets and provides high-performance set operations similar to accessing the keys of the <code>Dictionary&lt;TKey, TValue&gt;</code> or <code>Hashtable</code> collections. In simple terms, the <code>HashSet&lt;T&gt;</code> class can be thought of as a <code>Dictionary&lt;TKey, TValue&gt;</code> collection without values.</p> </blockquote> <p>So it is a collection, containing actual values. The sentence you quoted there is false.</p> <p>That being said, you <em>could</em> create an <code>ISet&lt;T&gt;</code> implementation that works that way, e.g. representing numbers in a set as ranges. But trying to do that with a vanilla <code>HashSet&lt;T&gt;</code> will quickly break down.</p>