S3898 — Value types should implement "IEquatable<T>"

Language
VB.NET
Type
Code smell
Severity
Major
Tags
performance

Why is this an issue?

If you’re using a Structure, 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


Structure MyStruct ' Noncompliant

    Public Property Value As Integer

End Structure

Compliant solution


Structure MyStruct
    Implements IEquatable(Of MyStruct)

    Public Property Value As Integer

    Public Overloads Function Equals(other As MyStruct) As Boolean Implements IEquatable(Of MyStruct).Equals
        ' ...
    End Function

End Structure

Resources

↑ Back to top