É possível combinar códigos hash para membros privados para gerar um novo código hash?

Eu tenho um objeto para o qual eu quero gerar um hash exclusivo (substituir GetHashCode ()), mas eu quero evitar estouro ou algo imprevisível.

O código deve ser o resultado da combinação dos códigos hash de uma pequena coleção de strings.

Os códigos hash farão parte da geração de uma chave de cache, então, idealmente, eles devem ser únicos, mas o número de valores possíveis que estão sendo hash é pequeno, então acho que a probabilidade está a meu favor aqui.

Será que algo assim seria suficiente? E existe uma maneira melhor de fazer isso?

int hash = 0;
foreach(string item in collection){
    hash += (item.GetHashCode() / collection.Count)
}
return hash;

EDIT: Obrigado por respostas até agora. @Jon Skeet: Não, a ordem não é importante

Eu acho que isso é quase uma outra pergunta, mas desde que eu estou usando o resultado para gerar uma chave de cache (string) faria sentido usar uma função de hash criptográfica como MD5 ou apenas usar a representação de seqüência de caracteres deste int?

questionAnswers(4)

yourAnswerToTheQuestion