Junior — Middle
Γιατί σε μια κλάση .NET υπερισχύουν οι μέθοδοι GetHashCode και Equals;
sobes.tech AI
Απάντηση από AI
Στο .NET, οι μέθοδοι GetHashCode και Equals επαναπροσδιορίζονται για σωστή σύγκριση αντικειμένων και σωστή λειτουργία με συλλογές όπως Dictionary και HashSet.
- Το Equals καθορίζει πότε δύο αντικείμενα θεωρούνται ίσα κατά νόημα.
- Το GetHashCode επιστρέφει έναν αριθμητικό κωδικό που χρησιμοποιείται για γρήγορη αναζήτηση σε πίνακες κατακερματισμού.
Αν επαναπροσδιορίσετε μόνο το Equals, αλλά όχι το GetHashCode, τα αντικείμενα μπορεί να μην λειτουργούν σωστά στις συλλογές κατακερματισμού. Αυτές οι μέθοδοι επαναπροσδιορίζονται συνήθως μαζί για να διασφαλιστεί η συνέπεια: αν το Equals επιστρέφει true για δύο αντικείμενα, το GetHashCode τους πρέπει επίσης να επιστρέφει την ίδια τιμή.
Παράδειγμα:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public override bool Equals(object obj)
{
if (obj is Person other)
return Name == other.Name && Age == other.Age;
return false;
}
public override int GetHashCode()
{
return HashCode.Combine(Name, Age);
}
}