We recommend using Visual Studio 2017

CA2226: Operators should have symmetrical overloads


The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The latest version of this topic can be found at CA2226: Operators should have symmetrical overloads.

|Breaking Change|Non Breaking|

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

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.

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

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

CA1046: Do not overload operator equals on reference types

CA2225: Operator overloads have named alternates

CA2224: Override equals on overloading operator equals

CA2218: Override GetHashCode on overriding Equals

CA2231: Overload operator equals on overriding ValueType.Equals