Aracılığıyla paylaş


CA1046: Başvuru türlerinde eşittir işleçlerini aşırı yüklemeyin

TypeName

DoNotOverloadOperatorEqualsOnReferenceTypes

CheckId

CA1046

Kategori

Microsoft.Design

Değişiklik kesiliyor

Bölme

Neden

Bir ortak veya iç içe geçmiş ortak başvuru türü Eşitlik işlecini overloads.

Kural Tanımı

Başvuru tipleri için varsayılan uygulama eşitlik işlecinin hemen her zaman doğrudur.Varsayılan olarak, yalnızca aynı nesneye gelirseniz eşit iki başvuru.

İhlalleri düzeltmek nasıl

Bu kuralı ihlal düzeltmek için eşitlik işlecinin uygulamasını kaldırın.

Uyarıları ne zaman

Başvuru tipinin yerleşik değer türü gibi davranır, bir uyarı bu kuraldan bastırmak güvenlidir.Toplama veya çıkarma türü örnekleri üzerinde yapmak için anlamlı, Eşitlik işlecini uygulamak ve ihlali bastırmak büyük olasılıkla doğrudur.

Örnek

Aşağıdaki örnek, iki başvuru karşılaştırırken varsayılan davranışı gösterir.

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);
      }
   }
}

Aşağıdaki uygulama bazı başvurularını karşılaştırır.

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");     
       }
    }
}

Bu örnek aşağıdaki çıktıyı üretir.

              

İlgili kuralları

CA1013: Eşittir işlecini ekleme ve çıkarmayı aşırı yükleyerek aşırı yükleyin

Ayrıca bkz.

Başvuru

Object.Equals

Diğer Kaynaklar

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