-
Notifications
You must be signed in to change notification settings - Fork 3
Gendarme.Rules.Correctness.DoNotRecurseInEqualityRule(git)
Sebastien Pouliot edited this page Mar 2, 2011
·
1 revision
Assembly: Gendarme.Rules.Correctness
Version: git
An operator== or operator!= method is calling itself recursively. This is usually caused by neglecting to cast an argument to System.Object before comparing it to null.
Bad example:
public static bool operator== (Customer lhs, Customer rhs)
{
if (object.ReferenceEquals (lhs, rhs)) {
return true;
}
if (lhs == null || rhs == null) {
return false;
}
return lhs.name == rhs.name && lhs.address == rhs.address;
}
Good example:
public static bool operator== (Customer lhs, Customer rhs)
{
if (object.ReferenceEquals (lhs, rhs)) {
return true;
}
if ((object) lhs == null || (object) rhs == null) {
return false;
}
return lhs.name == rhs.name && lhs.address == rhs.address;
}
- This rule is available since Gendarme 2.4
You can browse the latest source code of this rule on github.com
Note that this page was autogenerated (3/17/2011 1:55:44 PM) based on the xmldoc comments inside the rules source code and cannot be edited from this wiki.
Please report any documentation errors, typos or suggestions to the
Gendarme Mailing List. Thanks!