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)
{
// ...
}
}