Sobes.tech
Junior — Middle

Ի՞նչ քայլեր պետք է կատարել՝ սեփական դասը որպես բանալի օգտագործելու համար բառարանային հավաքածուի տեսակում։

sobes.tech AI

Պատասխան AI-ից

C# լեզվում Dictionary<TKey, TValue> մեջ սեփական դասը որպես բանալի օգտագործելու համար անհրաժեշտ է ապահովել բանալիների ճիշտ համեմատությունը և նրանց հեշ-կոդերի հաշվարկը: Դրա համար անհրաժեշտ է՝

  1. Օպտիմալացնել Equals(object obj) մեթոդը, որպեսզի այն ճիշտ համեմատի ձեր դասի օբյեկտները կարևոր դաշտերով:
  2. Օպտիմալացնել 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);
    }
}

Այլընտրանք՝ կարող եք իրականացնել IEqualityComparer<T> ինտերֆեյսը և փոխանցել այն բառարանի կոնստրուկտորին, եթե չեք ցանկանում փոփոխել դասը։