حفظ معلومات الرمز مع إنشاء تشكيل جانبي لملفات بيانات ca2116:
TypeName |
DoNotOverloadOperatorEqualsOnReferenceTypes |
CheckId |
ca1046 |
Category |
Microsoft.تصميم |
تعطيل تغيير |
فصل |
السبب
عام أو عام المتداخلة نوع المرجع التحميلات الزائدة عامل المساواة.
وصف القاعدة
ل مرجع بالكتابة، يتم تطبيق الافتراضي عامل المساواة دائماً الصحيح. عن طريق الافتراضي، تساوي مرجعين فقط إذا كانت الإشارة إلى نفس الكائن.
كيف إلى الإصلاح انتهاكات
إلى إصلاح انتهاكا لهذه قاعدة، قم بإزالة تطبيق operaإلىr المساواة.
عند إلى منع التحذيرات
هو آمن لمنع ظهور تحذير من القيم بالموضع هو قاعدة عند نوع مرجع يسلك نفس نوع القيمة مضمن. إذا هو ذات معنى للقيام بالجمع أو الطرح تشغيل مثيلات النوع، هو فمن المحتمل أن الصحيحة تطبيق عامل المساواة ومنع الانتهاك.
مثال
يوضح المثال التالي سلوك الافتراضي عند مقارنة اثنين مراجع.
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);
}
}
}
تطبيق التالي يقارن بعض مراجع.
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");
}
}
}
ينتج هذا المثال الإخراج التالي:
a = new (2,2) and b = new (2,2) are equal? No c and a are equal? Yes b and a are == ? No c and a are == ? Yes
القواعد ذات الصلة
ca1013: يساوي عامل التحميل الزائد تشغيل التحميل الزائد إضافة وطرح