В этом примере постер переопределил метод получения хеш-кода.Я понимаю, что это было сделано для того, чтобы обеспечить лучшее хэш-значение для возвращаемого объекта, чтобы уменьшить количество коллизий и, следовательно, уменьшить количество случаев, когда необходимо будет вызвать Equals()
.
Что я хотел бы знать, как этот алгоритм был рассчитан:
return 17 + 31 * CurrentState.GetHashCode() + 31 * Command.GetHashCode();
Есть ли какая-то конкретная причина, по которой были выбраны рассматриваемые числа?Могу ли я просто выбрать свои собственные номера, чтобы вставить в него?