If you’re using a struct, it is likely because you’re interested in performance. But by failing to implement
IEquatable<T> you’re loosing performance when comparisons are made because without IEquatable<T>, boxing and
reflection are used to make comparisons.
Noncompliant code example
struct MyStruct // Noncompliant
{
public int Value { get; set; }
}
Compliant solution
struct MyStruct : IEquatable<MyStruct>
{
public int Value { get; set; }
public bool Equals(MyStruct other)
{
// ...
}
}