Namevaluecollection hat eigentlich nichts tun mit seinen IEqualityComparer?
-
27-09-2019 - |
Frage
Ich bin auf der Suche System.Collections.Specialized.NameValueCollection
und es dauert eine IEqualityComparer
, die gute Nachricht ist, wenn jemand wie ich die Elemente in der Sammlung von, sagen wir, so etwas wie die alphabetische Reihenfolge der Schlüssel sortieren wollten.
Aber auf einem genaueren Blick in Reflector
, ich sehe nicht die NVC
Klasse tatsächlich die IEqualityComparer
überall verwenden. Ist meine Beobachtung richtig? Wie in, sehe ich keine Verwendung für ein IEqualityComparer
in einer enumerable anderen Stelle als neu ordnen seiner konstituierenden Elemente auf einige Kardinal Reihenfolge. Und ich habe keine Methode auf NVC
sehen, dass aussieht wie es könnte etwas Ähnliches tun wollen (Sort
, Arrange
, OrderBy
, Aggregate
usw.).
Lösung
NameValueCollection
verwendet ein Hashtable intern zu speichern, die Werte. Die Hashtable
verwendet die IEqualityComparer
zu Hash und vergleichen Schlüssel für die Gleichstellung.
Sie auch, dass IEqualityComparer
beachten Sie keine Bestellung tun, vergleicht er nur für die Gleichstellung (wie der Name schon sagt), so dass es nicht sinnvoll ist, wenn Sie auf wollen sort Werte / Tasten.