¿Cómo se diferencia la interfaz ILookup<key, value>
de IDictionary<key, value>
?ILookup interface vs IDictionary
No entiendo para qué está diseñada la interfaz ILookup
.
¿Cómo se diferencia la interfaz ILookup<key, value>
de IDictionary<key, value>
?ILookup interface vs IDictionary
No entiendo para qué está diseñada la interfaz ILookup
.
ILookup
entradas pueden contener varios elementos, por tecla - cada tecla está asignada a una IEnumerable<TElement>
.
También como se insinuó en los comentarios de un ILookup
es inmutable, mientras que se puede actualizar los valores de una IDictionary
(que expone un método Add()
y un indexador que permite conseguir y valores de ajuste).
En resumen, su caso de uso es muy diferente: utiliza una búsqueda cuando necesita un mapa 1: N con valores corregidos que no cambian (y no pueden). Un diccionario por otro lado ofrece una mutable mapeo 1: 1 de pares de valores clave, por lo que se puede actualizar para agregar o eliminar valores.
De hecho, cada entrada es un 'IEnumerable
+1 Si bien es cierto, sería bueno tener más sobre la diferencia con la interfaz, la mutabilidad de actualización, los requisitos clave, etc. –
Implementar 'ILookup
Es mucho más simple que IDictionary
. Es utilizado por Linq. Solo tiene Contains
, Item
y Count
. IDictionary
tiene Add
, Remove
, etc.
¿Quiere decir que ILookup es un subconjunto de solo lectura de IDictionary? –
Tipo de ... Pero cada elemento es un agrupamiento IG, por lo que puede haber múltiples elementos para una tecla, por lo que no se correlaciona bien. Hubiera sido agradable tener una interfaz de solo lectura para Dictionary. – Philippe
@Philippe La interfaz de solo lectura del diccionario es 'IReadOnlyDictionary
Soporte "Multi-map" es lo primero que se le viene a la mente (una tecla se puede asignar a un conjunto de valores). –
Posible duplicado de "[¿Cuál es el punto de búsqueda?] (Https://stackoverflow.com/q/1403493/107625)". –