rspec/rules/S1206/csharp/rule.adoc
Fred Tingaud 51369b610e
Make sure that includes are always surrounded by empty lines (#2270)
When an include is not surrounded by empty lines, its content is inlined
on the same line as the adjacent content. That can lead to broken tags
and other display issues.
This PR fixes all such includes and introduces a validation step that
forbids introducing the same problem again.
2023-06-22 10:38:01 +02:00

64 lines
1.3 KiB
Plaintext

== Why is this an issue?
There is a contract between ``++Equals(object)++`` and ``++GetHashCode()++``: If two objects are equal according to the ``++Equals(object)++`` method, then calling ``++GetHashCode()++`` on each of them must yield the same result. If this is not the case, many collections won't handle class instances correctly.
In order to comply with the contract, ``++Equals(object)++`` and ``++GetHashCode()++`` should be either both inherited, or both overridden.
=== Noncompliant code example
[source,csharp]
----
class MyClass // Noncompliant - should also override "GetHashCode()"
{
public override bool Equals(object obj)
{
// ...
}
}
----
=== Compliant solution
[source,csharp]
----
class MyClass
{
public override bool Equals(object obj)
{
// ...
}
public override int GetHashCode()
{
// ...
}
}
----
include::../see.adoc[]
ifdef::env-github,rspecator-view[]
'''
== Implementation Specification
(visible only on this page)
=== Message
This [class|struct] overrides "GetHashCode()|Equals()" and should therefore also override "GetHashCode()|Equals()".
=== Highlighting
The [class|struct] name.
'''
== Comments And Links
(visible only on this page)
include::../comments-and-links.adoc[]
endif::env-github,rspecator-view[]