• 0

ما هو الفرق بين == و .Equals() في C#؟

هل هناك فرق بين وضع == أو .Equals() أثناء المقارنة؟ إن كان هناك فرق أرجو الشرح مع مثال

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

عادةً ما تُستخدم العملية '==' في التعبيرات expressions من النوع Object حيث أنها تقارن بين غرضين 2 Objects من ناحية قيمة المؤشر لكل منهما Reference:

Sysytem.Object.ReferenceEquals

بينما Equals هي عبارة عن دالة (إصدار معاد تعريفة للعملية '==') overriden تستخدم عادةً للمقارنات من نوع string، أي مقارنة محتوى الغرض object.

لنقم بعمل مقارنتين مرة باستخدام العملية '==' مرة أخرى باستخدام الدالة .Equals وطباعة النتيجة:

static void Main(string[] args)
        {
            char[] chars = { 'a', 'b', 'c'};
            Object s1 = new String(chars);
            Object s2 = new String(chars);

     

            Console.Write("s1.equals(s2)  :" + s1.Equals(s2) + "  s1==s2   :");
            Console.WriteLine(s1 == s2);

            String s3 = "abc";
            String s4 = "abc";

            Console.Write("s3.equals(s4)  :" + s1.Equals(s2) + "  s3==s4   :");
            Console.WriteLine(s3 == s4);


            Console.ReadLine();
        }

قمت بإنشاء 2 Objects من نوع String ومقارنتهما مرة باستخدام '=='ومرة باستخدام .Equals()، عند طباعة نتيجة مقارنة الغرضين باستخدام '==' تتم المقارنة بحسب الـreference أي بحسب القيمة التي تستخدم للتأشير على قيمة محتوى الObject، أي سيتم طباعة قيمة False لأن قيمة مؤشر الغرض الأول لا تساوي قيمة مؤشر الغرض الثاني، أما باستخدام الدالة .Equals فسيتم طباعة قيمة True لان محتوى الغرضين متساوي وهو abc

equals_operator.thumb.png.1b296a9e1a3c27

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن