Sobes.tech
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

Επομένως, χωρίς υπερισχύσεις, η σύγκριση ελέγχει αν οι μεταβλητές αναφέρονται στο ίδιο αντικείμενο.