Sobes.tech
Junior — Middle

Неге .NET класында GetHashCode жана Equals методдору кайра жазылат?

sobes.tech AI

AIден жооп

.NETте, GetHashCode жана Equals методдору объекттерди туура салыштыруу жана коллекциялар менен, мисалы, сөздүктөр (Dictionary) жана топтомдор (HashSet), туура иштеши үчүн кайра аныкталат.

  • Equals эки объекттин мааниде бирдей экенин аныктайт.
  • GetHashCode объектти тез табуу үчүн колдонулган сандык кодду кайтарат.

Эгер only Equals кайра аныкталса, бирок GetHashCode аныкталбаса, объекттер хэш коллекцияларында туура иштебей калышы мүмкүн. Бул методдор адатта бирге кайра аныкталат, алардын шайкештигин камсыз кылуу үчүн: эгер 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);
    }
}