Operators should have symmetrical overloads

TypeName

OperatorsShouldHaveSymmetricalOverloads

CheckId

CA2226

Category

Microsoft.Usage

Breaking Change

NonBreaking

Cause

A type implements the equality or inequality operator and does not implement the opposite operator.

Rule Description

There are no circumstances where either equality or inequality is applicable to instances of a type, and the opposite operator is undefined. Types typically implement the inequality operator by returning the negated value of the equality operator.

The C# compiler issues an error for violations of this rule.

How to Fix Violations

To fix a violation of this rule, implement both the equality and inequality operators, or remove the one that is present.

When to Exclude Warnings

Do not exclude a warning from this rule. Your type will not work in a manner that is consistent with the .NET Framework.

Do not overload operator equals on reference types

Operator overloads have named alternates

Override equals on overloading operator equals

Override GetHashCode on overriding Equals

Overload operator equals on overriding value type equals