I am exploring the HashSet<T> type, but I don’t understand where it stands in collections.
Can one use it to replace a List<T>? I imagine the performance of a HashSet<T> to be better, but I couldn’t see individual access to its elements.
Is it only for enumeration?
The important thing about
HashSet<T>is right there in the name: it’s a set. The only things you can do with a single set is to establish what its members are, and to check whether an item is a member.Asking if you can retrieve a single element (e.g.
set[45]) is misunderstanding the concept of the set. There’s no such thing as the 45th element of a set. Items in a set have no ordering. The sets {1, 2, 3} and {2, 3, 1} are identical in every respect because they have the same membership, and membership is all that matters.It’s somewhat dangerous to iterate over a
HashSet<T>because doing so imposes an order on the items in the set. That order is not really a property of the set. You should not rely on it. If ordering of the items in a collection is important to you, that collection isn’t a set.Sets are really limited and with unique members. On the other hand, they’re really fast.