Junior — Middle
Ποιος είναι ο ρόλος της μεθόδου GetHashCode κατά τη χρήση λεξικού ή συλλογής κατακερματισμού;
sobes.tech AI
Απάντηση από AI
Η μέθοδος GetHashCode παίζει καθοριστικό ρόλο στη χρήση λεξικών (Dictionary) και άλλων συλλογών κατακερματισμού σε C#. Επιστρέφει μια ακέραια τιμή (κωδικό κατακερματισμού) που χρησιμοποιείται για τον γρήγορο προσδιορισμό της θέσης ενός αντικειμένου στον πίνακα κατακερματισμού.
Όταν προσθέτετε ένα αντικείμενο σε ένα λεξικό, καλείται πρώτα η GetHashCode για να καθορίσει το καλάθι (bucket) στο οποίο θα τοποθετηθεί το στοιχείο. Κατά την αναζήτηση ενός στοιχείου με κλειδί, υπολογίζεται πρώτα ο κωδικός κατακερματισμού για να βρεθεί γρήγορα το σωστό καλάθι, και στη συνέχεια καλείται η Equals για ακριβή σύγκριση.
Είναι σημαντικό ότι:
- Αν δύο αντικείμενα είναι ίσα (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);
}
}