In the MSDN API for the HashSet constructor with no arguments it states
Initializes a new instance of the HashSet class that is empty and uses the d
By default, it will delegate to EqualityComparer. This returns a comparer that can compare two objects of type T.
For a custom class, this does a few things in this order:
IEquatable, it will delegate to the class's implementation of this interfaceEquals method defined, it will use that