Avatar ·

الفرق بين == و === في C#

مرحبًا بالجميع! أنا مبتدئ في C# (كنت أكتب سابقًا بلغة JavaScript) وواجهت صعوبة في فهم عوامل المقارنة. في JS يوجد مقارنة صارمة === وغير صارمة ==. في C# أرى فقط ==، لكنني سمعت أن هناك Equals() و ReferenceEquals(). ومع ذلك، لا أستطيع العثور على معلومات حول === — هل هو غير موجود ببساطة؟ أم أنه بناء جملة فاتني؟

جربت الكود التالي:

int a = 5;
int b = 5;
object objA = a;
object objB = b;

Console.WriteLine(a == b);          // True
Console.WriteLine(objA == objB);    // False (مقارنة المراجع؟)
Console.WriteLine(objA.Equals(objB)); // True (مقارنة القيم؟)

توقعت أن objA == objB سيعطي True، لكنني حصلت على False. ما الفرق بين == للأنواع القيمية والمرجعية؟ هل يوجد في C# ما يعادل === من JS للمقارنة الصارمة دون التغليف؟ أم يجب دائمًا استخدام