domingo, 26 de noviembre de 2017

Diccionarios en C# - Parte 2/6: IDictionary

Índice

1. Introducción
2. Palabras Clave
3. La Interfaz IDictionary
3.1 Generalidades
3.2 Propiedades y métodos sobresalientes
3.3 Diferencias frente a la versión genérica
4. Conclusiones
5. Literatura & Enlaces

1. Introducción

Estudiáremos en este artículo la interfaz no-genérica para representar una estructura de datos como diccionario: IDictionary. Aprenderemos que el tipo de dato para los elementos del diccionario es DictionaryEntry. Se resaltarán las diferencias respecto a su contraparte genérica IDictionary<TKey, TValue>.

2. Palabras Clave

  • Colección
  • Diccionario
  • Estructura de datos
  • No-genérico

3. La Interfaz IDictionary

3.1 Generalidades

Esta interfaz está diseñada para representar una colección que almacene o guarde sus elementos como un diccionario: cada elemento se distingue con una llave (o ID) y una valor asociado a esa llave; la recuperación se lleva a cabo por esa misma llave.

Implementa las interfaces ICollection y IEnumerable para que adquirir el comportamiento y estado de una colección y permitir la enumeración de los elementos.

En relación con lo anterior, los elementos de la colección son de tipo DictionaryEntry. Esta es una estructura que define una llave y un valor. Como consecuencia al recuperar un elemento de la colección IDictionary lo que se obtiene es un objeto de esta estructura, en lugar de un elemento del tipo de dato de la llave o el valor ("DictionaryEntry Structure", 207).

3.2 Propiedades y métodos sobresalientes

Entre las propiedades sobresalientes de esta interfaz se hallan:
  • Count: Obtiene la cantidad de elementos en la colección.
  • Keys: Obtiene todas las llaves.
  • Values: Obtiene todos los valores.
En cuanto a los métodos se pueden mencionar:
  • Add: Agrega un elemento con una llave de tipo Object y un valor del mismo tipo de dato.
  • Contains(Object): Comprueba si el diccionario contiene un objeto a partir de su llave.

3.3 Diferencias frente la versión genérica

Además de la carencia de genericidad, IDictionary se diferencia funcionalmente de su contraparte genérica IDictionary<TKey, TValue> (Diccionarios en C# - Parte 1/6: IDictionary(TKey, TValue)) en los siguientes aspectos (Albahari, 2012):
  • Al intentar recuperar un elemento inexistente por su llave se retorna null en lugar de generarse una excepción.
  • El método Contains comprueba la existencia por llave, mientras que ContainsKey de IDictionary<TKey, TValue> realiza lo mismo.

4. Conclusiones

Conocimos de forma breve la versión no-genérica de IDictionary. La interfaz para colecciones que no requieren la distinción de los tipos de datos para llave y valor. Se expusieron las diferencias fundamentales frente la versión genérica IDictionary<TKey, TValue>.

En el siguiente artículo hablaremos más acerca de IDictionary<TKey, TValue> y aprenderemos acerca de Hashtable.

5. Literatura & Enlaces

Albahari, J., Albahari, B. (2012). C# 5.0 in a Nutshell. United States: O'Reilly Media.
IDictionary Interface (System.Collections) (2017). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.collections.idictionary%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
DictionaryEntry Structure (System.Collections) (2017). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.collections.dictionaryentry(v=vs.110).aspx
Diccionarios en C# - Parte 1/6: IDictionary(TKey, TValue) (2017). Recuperado desde: https://ortizol.blogspot.com.co/2017/11/diccionarios-en-csharp-parte-1-6-idictionary-tkey-tvalue-.html


O

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.