What is the difference between IEqualityComparer and IEquatable?
IEqualityComparer<T> is an interface for an object that performs the comparison on two objects of the type T. IEquatable<T> is for an object of type T so that it can compare itself to another of the same type.