Sobes.tech
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);
    }
}