diccionario en c# ejemplos



¿Cuándo usar un HybridDictionary sobre otros tipos de diccionarios? (1)

Estoy mirando las clases de Collection en MSDN para el marco .Net. Me encontré con el HybridDictionary y dice ( http://msdn.microsoft.com/en-us/library/system.collections.specialized.hybriddictionary.aspx ):

Implementa IDictionary utilizando un ListDictionary cuando la colección es pequeña y luego cambia a Hashtable cuando la colección crece.

Así que me pregunté sobre el ListDictionary que dice ( http://msdn.microsoft.com/en-us/library/system.collections.specialized.listdictionary.aspx )

Recomendado para colecciones que normalmente incluyen menos de 10 artículos.

Ahora me parece un número arbitrario (de artículos). No puedo encontrar en la documentación cuál sería el mecanismo detrás de esto, sospeché que el límite de rendimiento se habría relacionado con una serie de elementos como 2 ^ N (2 a la potencia de N).

Ahora uso el tipo de colección del Dictionary menudo, y las colecciones pueden contener de 10 a 30 elementos, 50 tops, dependiendo del 'tamaño de página'.

Pero HybridDictionary y ListDictionary requieren unboxing y no hay contructores de tipo genérico para ellos.

No puedo encontrar una comparación en ningún lugar sobre el rendimiento de un Dictionary HybridDictionary vs Dictionary .

Entonces, ¿cuándo usar realmente este HybridDictionary sobre otros tipos de Dictonary?

PS Y si HybridDictionary cambia a ListDictionary o HashTable cuando el número de elementos HashTable para optimizar su funcionamiento. ¿Por qué usar siempre un ListDictionary ? Si algunos requisitos en el software cambian, y de repente se debe colocar un máximo de 20 elementos en el ListDictionary , en lugar de un máximo de 10 elementos, ¿el código debe re-factorizarse a HybridDictionary para mantener el rendimiento?


¿Cuándo usar un HybridDictionary sobre otros tipos de diccionarios?

Utilizaría el ListDictionary cuando esté seguro de que el tamaño de la colección será inferior a 10 elementos.

El HybridDictionary es prácticamente igual al Dictionary pero aprovechará el rendimiento de ListDictionary cuando el tamaño de la colección sea inferior a 10 elementos. Una vez que la colección crezca por encima de 10, HybridDictionary cambiará de usar ListDictionary internamente a usar una HashTable como un Dictionary común.

Entonces, cuando usar uno, bueno, si su colección suele tener menos de 10 artículos, pero a veces podría aumentar de tamaño, entonces se HybridDictionary .

Por ejemplo, usamos HybridDictionary en la capa de comunicaciones de las aplicaciones de nuestros dispositivos móviles, la cola de mensajes de comunicaciones casi siempre tendrá menos de 10 elementos, pero si hay una interrupción del servidor backend, los mensajes de comunicaciones se acumularán en los 100 o 1000 dependiendo de cuánto tiempo el servidor está inactivo, un ListDictionary en este escenario sería horrible, y en ese caso, HybridDictionary cambiará a un HashTable para mantener el rendimiento alto y aún así nos dará el máximo rendimiento cuando tenga menos de 10.

Así que se usa en lugares especializados, de ahí el espacio de nombres al que pertenece System.Collections.Specialized :)





collections