Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
136 of 1492 menu
◀ ▶

Структура HashCode

Структура HashCode накапливает вклад полей через Add и отдаёт итог методом ToHashCode. Для пары значений удобен статический Combine.

Пример

Давайте соберём хеш из int и string через Add:

using System; class Program { static void Main() { var hc1 = new HashCode(); hc1.Add(1); hc1.Add("abcde"); var hc2 = new HashCode(); hc2.Add(1); hc2.Add("abcde"); Console.WriteLine(hc1.ToHashCode() == hc2.ToHashCode()); } }

Результат выполнения кода:

True

Пример

Давайте сравним Combine для одинаковых аргументов:

using System; class Program { static void Main() { int a = HashCode.Combine(1, 2); int b = HashCode.Combine(1, 2); Console.WriteLine(a == b); } }

Результат выполнения кода:

True

Пример

Давайте проверим, что разные поля меняют хеш:

using System; class Program { static void Main() { int a = HashCode.Combine(1, "abcde"); int b = HashCode.Combine(2, "abcde"); Console.WriteLine(a == b); } }

Результат выполнения кода:

False

Пример

Давайте добавим bool после двух полей:

using System; class Program { static void Main() { var hc1 = new HashCode(); hc1.Add(5); hc1.Add("abcde"); hc1.Add(true); var hc2 = new HashCode(); hc2.Add(5); hc2.Add("abcde"); hc2.Add(true); Console.WriteLine(hc1.ToHashCode() == hc2.ToHashCode()); } }

Результат выполнения кода:

True

Смотрите также

  • метод Add,
    который добавляет очередное поле
  • метод Combine,
    который комбинирует аргументы сразу
  • метод GetHashCode,
    который переопределяют вместе с Equals
  • метод ToHashCode,
    который завершает накопление
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить