NameValueCollection in realtà non fa nulla con il suo IEqualityComparer?
-
27-09-2019 - |
Domanda
sto guardando System.Collections.Specialized.NameValueCollection
e ci vuole un IEqualityComparer
, il che è una buona notizia se qualcuno come me volesse ordinare gli elementi della raccolta, ad esempio, in base a qualcosa di simile all'ordine alfabetico delle chiavi.
Ma, guardando più da vicino Reflector
, non vedo il NVC
classe effettivamente utilizzando il file IEqualityComparer
ovunque.La mia osservazione è corretta?Nel senso che non vedo alcuna utilità per un IEqualityComparer
in un'entità enumerabile diversa dal riorganizzare i suoi elementi costitutivi secondo un ordine cardinale.E non vedo un metodo attivo NVC
sembra che potrebbe voler fare qualcosa del genere (Sort
, Arrange
, OrderBy
, Aggregate
, eccetera.).
Soluzione
NameValueCollection
utilizza a Tabella hash internamente per memorizzare i valori.IL Hashtable
utilizza il IEqualityComparer
per eseguire l'hash e confrontare le chiavi per l'uguaglianza.
Nota anche questo IEqualityComparer
non esegue alcun ordinamento, confronta solo per uguaglianza (come suggerisce il nome), quindi non è utile se lo desideri ordinare valori/chiavi.