C # Переопределение метода GetHashCode

В этом примере плакат переопределил метод получения хэш-кода . Я понимаю, что это было сделано для того, чтобы обеспечить лучшее хеш-значение для возвращаемого объекта, уменьшить количество коллизий и, следовательно, уменьшить количество случаев, когда необходимо будет вызывать Equals () .

Я хотел бы знать, как был рассчитан этот алгоритм:

return 17 + 31 * CurrentState.GetHashCode() + 31 * Command.GetHashCode();

Есть ли особая причина, по которой были выбраны указанные числа? Могу ли я просто выбрать свои собственные числа и вставить в него?

7
задан Community 23 May 2017 в 10:28
поделиться