Junior — Middle
Πώς πραγματοποιείται η σύγκριση αντικειμένων τύπου αναφοράς αν δεν έχουν υλοποιηθεί δικά τους μεθόδους σύγκρισης;
sobes.tech AI
Απάντηση από AI
Αν στη C# δεν υλοποιούνται δικά της μέθοδοι σύγκρισης για τύπους αναφοράς (για παράδειγμα, αν δεν υπερισχύουν οι μέθοδοι Equals και GetHashCode), η σύγκριση αντικειμένων γίνεται προεπιλεγμένα με βάση την αναφορά. Αυτό σημαίνει ότι δύο αντικείμενα θεωρούνται ίσα μόνο αν δείχνουν στο ίδιο αντίγραφο στη μνήμη.
Παράδειγμα:
class Person {}
var p1 = new Person();
var p2 = new Person();
bool areEqual = p1.Equals(p2); // false, επειδή είναι διαφορετικά αντικείμενα
bool areSame = Object.ReferenceEquals(p1, p2); // false
var p3 = p1;
bool areSame2 = Object.ReferenceEquals(p1, p3); // true
Επομένως, χωρίς υπερισχύσεις, η σύγκριση ελέγχει αν οι μεταβλητές αναφέρονται στο ίδιο αντικείμενο.