У меня есть объект, для которого я хочу создать уникальный хеш (переопределить GetHashCode()), но я хочу избежать переполнения или чего-то непредсказуемого.
Код должен быть результатом объединения хэш-кодов небольшого набора строк.
Хэш-коды будут частью генерации ключа кеша, поэтому в идеале они должны быть уникальными, однако количество возможных значений, которые хэшируются, невелико, поэтому я думаю, что вероятность в моей пользе здесь.
Будет ли что-то вроде этого достаточным И есть ли лучший способ сделать это?
int hash = 0;
foreach(string item in collection){
hash += (item.GetHashCode() / collection.Count)
}
return hash;
EDIT: Спасибо за ответы. @Jon Skeet: Нет, порядок не важен
Я думаю, это почти другой вопрос, но поскольку я использую результат для генерации ключа кеша (строки), имеет смысл использовать криптографическую хэш-функцию, такую как MD5, или просто использовать строковое представление этого int?