rspec/rules/S3898/vbnet/rule.adoc

35 lines
794 B
Plaintext
Raw Normal View History

== Why is this an issue?
2023-01-26 10:24:38 +01:00
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
2023-01-26 10:24:38 +01:00
[source,vbnet]
----
Structure MyStruct ' Noncompliant
Public Property Value As Integer
End Structure
----
=== Compliant solution
2023-01-26 10:24:38 +01:00
[source,vbnet]
----
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
----
include::../see.adoc[]
2023-01-26 10:24:38 +01:00
include::../rspecator.adoc[]