Sobes.tech
Junior — Middle

Ποια βήματα πρέπει να ακολουθηθούν για να χρησιμοποιήσετε μια δική σας κλάση ως κλειδί σε μια συλλογή τύπου λεξικό;

sobes.tech AI

Απάντηση από AI

Για να χρησιμοποιήσετε μια προσαρμοσμένη κλάση ως κλειδί σε ένα λεξικό (Dictionary<TKey, TValue>) στη C#, πρέπει να διασφαλίσετε ότι γίνεται σωστή σύγκριση των κλειδιών και ο υπολογισμός των κωδικών hash τους. Για αυτό, πρέπει:

  1. Να υπερεκμεταλλευτείτε τη μέθοδο Equals(object obj) ώστε να συγκρίνει σωστά τα αντικείμενα της κλάσης σας βάσει των σημαντικών πεδίων.
  2. Να υπερεκμεταλλευτείτε τη μέθοδο GetHashCode() ώστε τα αντικείμενα που θεωρούνται ίσα να έχουν τον ίδιο κωδικό hash.

Παράδειγμα:

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);
    }
}

Εναλλακτικά, μπορείτε να υλοποιήσετε το interface IEqualityComparer<T> και να το περάσετε στον κατασκευαστή του λεξικού, αν δεν θέλετε να αλλάξετε την ίδια την κλάση.