Skip to content

Gendarme.Rules.Design.OperatorEqualsShouldBeOverloadedRule(2.10)

Sebastien Pouliot edited this page Jan 22, 2011 · 2 revisions

OperatorEqualsShouldBeOverloadedRule

Assembly: Gendarme.Rules.Design
Version: 2.10

Description

This rule fires if a type overloads operator add +, or overloads operator subtract -, or is a value type and overrides Object.Equals, but equals == is not overloaded.

Examples

Bad example (add/substract):

class DoesNotOverloadOperatorEquals {
    public static int operator + (DoesNotOverloadOperatorEquals a)
    {
        return 0;
    }
    public static int operator - (DoesNotOverloadOperatorEquals a)
    {
        return 0;
    }
}

Bad example (value type):

struct OverridesEquals {
    public override bool Equals (object obj)
    {
        return base.Equals (obj);
    }
}

Good example:

struct OverloadsOperatorEquals {
    public static int operator + (OverloadsOperatorEquals a)
    {
        return 0;
    }
    public static int operator - (OverloadsOperatorEquals a)
    {
        return 0;
    }
    public static bool operator == (OverloadsOperatorEquals a, OverloadsOperatorEquals b)
    {
        return a.Equals (b);
    }
    public override bool Equals (object obj)
    {
        return base.Equals (obj);
    }
}
Clone this wiki locally