DCSIMG
The Difference Between Equals and Static Equal - שלמה גולדברג (הרב דוטנט)

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

The Difference Between Equals and Static Equal

 

כשהראתי לסטודנטים שאני מלמד את הפוסט של ספיריטוס שמדבר על ההבדלים בין Equal ל - ==,
 
שאלו אותי - מה ההבדל בין ה - Equal שיורשים מ - object לבין ה - Equal הסטטי ?
 
במחשבה ראשונה עניתי - שלמעשה הקריאה - Equal(obj1, obj2 מפעילה את obj1.Equal(obj2.
 
וכמובן שהשאלה הבאה הייתה, אז מה ההבדל ביניהם,
 
והתשובה הייתה נפתח את ה - reflector ונראה.
 
אז הנה הקוד של Equal
 

public static bool Equals(object objA, object objB)

{

    return ((objA == objB) ||

        (((objA != null) && (objB != null)) && objA.Equals(objB)));

}

 
למעשה קודם בודקים את האופרטור == ורק במקרה שזה החזיר false בודקים האם שניהם שונים מ - null ומפעילים את ה - equal,
 
שזה אומר למעשה כמה הבדלים מעשיים.
 
במידה ו - obj1 יהיה null, ה - Equal הרגיל ירסק את האפליקצייה בעוד שהסטטי יחיזר false.
 
במידה שעשינו override ל == אנחנו יכולים לקבל תוצאות שונות עבור ה - equal הרגיל (שלא מפעיל את ה - ==) לבין הסטטי.
 
במידה שעשינו override ל - equal אחנו יכולים לקבל תוצאה שונה עבור שני ה - equal
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 6 and 2 and type the answer here:


Enter the numbers above: