Sobes.tech
Junior — Middle

რა არის ობიექტში GetHashCode მეთოდის გადაწერას მიზანი?

sobes.tech AI

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

ობიექტში GetHashCode მეთოდის გადაწერაა აუცილებელი ჰეშ-ცხრილების და კოლექციების, როგორიცაა Dictionary ან HashSet, სწორად მუშაობისთვის. ეს მეთოდი აბრუნებს ობიექტის რიცხვობრივ ჰეშ-კოდს, რომელიც გამოიყენება სწრაფი ძიებისა და შედარებისთვის.

თუ გადაწერთ Equals მეთოდს ობიექტების შინაარსის მიხედვით შედარებისთვის, აუცილებელია ასევე გადაწეროთ GetHashCode, რათა თანაბარად მიჩნეული ობიექტები ჰქონდეთ ერთნაირი ჰეშ-კოდი. წინააღმდეგ შემთხვევაში, კოლექციები შეიძლება არასწორად მუშაობდეს.

მაგალითი:

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

აქ, GetHashCode უზრუნველყოფს, რომ ორი ობიექტი, რომლებსაც იგივე Name და Age აქვთ, ერთნაირი ჰეშ-კოდს მიიღებენ.