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.
struct MyStruct // Noncompliant
{
private int i;
public int I
{
//...
}
}
struct MyStruct : IEquatable<MyStruct>
{
private int i;
public int I
{
//...
}
public bool Equals(MyStruct other)
{
throw new NotImplementedException();
}
}