CS.OVRD.EQUALS

A public or nested public reference type overloads the equality operator (Equals(object)).

Vulnerability and risk

For reference types, the default implementation of the equality operator is almost always correct. By default, two references are equal only if they point to the same object.

Example 1

Copy
  public class Foo {
      public bool Equals(object o) {     // defect
          return true;
      }
  
      private class InnerClass {
          public bool Equals(object o) { // OK - not a public class
              return true;
          }
     }
 
     public struct InnerStruct {
         public bool Equals(object o) { // OK - not a reference type
             return true;
         }
     }
 }