Sobes.tech
Junior — Middle

Роли методу GetHashCode дар истифодаи луғат ё коллексияи хеш чист?

sobes.tech AI

Ҷавоб аз AI

Метод GetHashCode играе ключова роля при използването на речници (Dictionary) и други колекции за хеширане в C#. Той връща цяло число (хеш код), което се използва за бързо определяне на позицията на обект в хеш таблицата.

Когато добавяте обект към речник, първо се извиква 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);
    }
}