Sobes.tech
Junior — Middle

Կան իրավիճակներ, երբ ձեզ հարկավոր էր վերաշարադրել equals() մեթոդը ձեր դասերում?

sobes.tech AI

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

Այո, Equals() մեթոդի վերագրանցումը C#-ում հաճախ անհրաժեշտ է, երբ ցանկանում եք համեմատել օբյեկտները արժեքով, ոչ թե հղումով։ Օրինակ, եթե ունեք Person դաս, որի դաշտերը Name և Age, և ցանկանում եք երկու օբյեկտները համարվել հավասար, եթե այդ դաշտերը համընկնեն, ապա պետք է վերագրանցել Equals() և 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);
    }
}

Սա կարևոր է ճիշտ հավաքածուների աշխատանքի համար, օրինակ, HashSet<Person> կամ օբյեկտների համեմատության ժամանակ թեստերում։