I thought this method was valid but I was wrong:
static void Equals(T x, T y) { return x == y; //operator == can\'t be applied to type T } >
I like using EqualityComparer.Default for this.
EqualityComparer.Default
It is based on the overridden Equals method, but uses IEquatable when available, avoiding boxing on value types implementing it.
Equals
IEquatable
EqualityComparer.Default.Equals(x, y)