Sdílet prostřednictvím


CA1046: Není přetěžování operátor rovná se na typy odkazů

Název_typu

DoNotOverloadOperatorEqualsOnReferenceTypes

CheckId

CA1046

Kategorie

Microsoft.design

Změnit rozdělení

Rozdělení

Příčina

Typ veřejné nebo vnořené veřejné odkazu přetížení operátor rovnosti.

Popis pravidla

Typy odkazů provádění výchozí operátor rovnosti je téměř vždy správná.Dva odkazy jsou standardně rovná pouze v případě, že odkazují na stejný objekt.

Jak opravit porušení

Chcete-li opravit porušení tohoto pravidla odeberte provádění operátor rovnosti.

Při potlačení upozornění

Je bezpečné potlačí upozornění od tohoto pravidla, pokud typ odkazu se chová jako typ předdefinované hodnoty.Je smysluplné provádět sčítání nebo odčítání na instance typu, je pravděpodobně správné provádění operátor rovnosti a potlačit narušení.

Příklad

Následující příklad ukazuje výchozí chování při porovnání dvou odkazy.

using System;

namespace DesignLibrary
{
   public class MyReferenceType
   {
      private int a, b;
      public MyReferenceType (int a, int b)
      {
         this.a = a;
         this.b = b;
      }

      public override string ToString()
      {
         return String.Format("({0},{1})", a, b);
      }
   }
}

Následující aplikace porovnává některých odkazů.

using System;

namespace DesignLibrary
{
    public class ReferenceTypeEquality
    {
       public static void Main()
       {
          MyReferenceType a = new MyReferenceType(2,2);
          MyReferenceType b = new MyReferenceType(2,2);
          MyReferenceType c = a;

          Console.WriteLine("a = new {0} and b = new {1} are equal? {2}", a,b, a.Equals(b)? "Yes":"No");
          Console.WriteLine("c and a are equal? {0}", c.Equals(a)? "Yes":"No");
          Console.WriteLine("b and a are == ? {0}", b == a ? "Yes":"No");
          Console.WriteLine("c and a are == ? {0}", c == a ? "Yes":"No");     
       }
    }
}

Tento příklad vytvoří následující výstup.

  
  
  
  
  

Souvisejících pravidel

CA1013: Operátor rovná přetížení na přetížení sečíst a odečíst

Viz také

Referenční dokumentace

Guidelines for Implementing Equals and the Equality Operator (==)

Object.Equals