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