Ist es möglich, Hash-Codes für private Mitglieder zu kombinieren, um einen neuen Hash-Code zu generieren?

Ich habe ein Objekt, für das ich einen eindeutigen Hash generieren möchte (überschreiben Sie GetHashCode ()), aber ich möchte Überläufe oder etwas Unvorhersehbares vermeiden.

Der Code sollte das Ergebnis der Kombination der Hash-Codes einer kleinen Sammlung von Zeichenfolgen sein.

Die Hash-Codes werden Teil der Generierung eines Cache-Schlüssels sein. Idealerweise sollten sie eindeutig sein, aber die Anzahl der möglichen Werte, die gehasht werden, ist gering. Ich denke, die Wahrscheinlichkeit ist hier zu meinen Gunsten.

Wäre so etwas ausreichend UND gibt es einen besseren Weg, dies zu tun?

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

EDIT: Danke für die bisherigen Antworten. @ Jon Skeet: Nein, die Reihenfolge ist nicht wichtig

Ich denke, dies ist fast eine andere Frage, aber da ich das Ergebnis verwende, um einen Cache-Schlüssel (String) zu generieren, wäre es sinnvoll, eine krytografische Hash-Funktion wie MD5 zu verwenden oder einfach die String-Darstellung dieses int zu verwenden?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage