Sobes.tech
Junior — Middle

რა არის GetHashCode მეთოდის როლი სიტყვარის ან ჰეშ-კოლექციის გამოყენებისას?

sobes.tech AI

პასუხი AI-სგან

GetHashCode მეთოდი მნიშვნელოვან როლს ასრულებს C#-ში ლექსიკების (Dictionary) და სხვა ჰეშ კოლექციების გამოყენებისას. იგი აბრუნებს მთელ მნიშვნელობას (ჰეშ კოდი), რომელიც გამოიყენება ობიექტის პოზიციის სწრაფად განსაზღვრაში ჰეშ-ცხრილში.

როდესაც ობიექტს ლექსიკში ამატებთ, პირველად იძახება 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);
    }
}