Sie würden denken, dass, wenn zwei Wörterbücher die gleichen Schlüssel und Werte enthielten, sie den gleichen Hash-Code zurückbringen würden und gleich gleich sein würden? aber sie tun nicht - was mache ich falsch? oder wie vergleiche ich Wörterbücher auf diese Weise?Dictionary (TKey, TValue) GetHashCode und Equals - Wie funktionieren sie?
Danke. Code simpleple unter
/In diesem Fall möchte ich auch die Bestellung ist die gleiche/gleich.
SortedDictionary<int,string> sd1 = new SortedDictionary<int,string>();
sd1.Add(1,"one");
sd1.Add(2, "two");
sd1.Add(5, "five");
int sd1Hash = sd1.GetHashCode();
SortedDictionary<int, string> sd2 = new SortedDictionary<int, string>();
sd2.Add(1, "one");
sd2.Add(2, "two");
sd2.Add(5, "five");
int sd2Hash = sd2.GetHashCode();
//This is false
bool areEqual = sd1.Equals(sd2);
Es ist mir eine ganze Weile dauerte, dass diese Methode in .NET 2.0 nicht verfügbar, um herauszufinden ist. Kennen Sie irgendeine Alternative für .NET 2.0? – Aamir
Sie müssen Ihren eigenen IEqualityComparer> implementieren, der auf den Inhalt der Wörterbücher schaut, um den Hashcode und die Gleichheit stattdessen zu bestimmen –
thecoop
@Aamir, soweit ich weiß, gibt es keine eingebaute Alternative für .NET2, obwohl es nicht schwierig ist, eine eigene Methode zu schreiben, die beide Sammlungen gleichzeitig durchläuft und jedes Element der Reihe nach vergleicht (was genau die SequenceEqual-Methode ist). – LukeH