domingo, 24 de julio de 2016

La Estructura Guid en C#

Índice

1. Introducción
2. Palabras Clave
3. Estructura Guid
3.1 Generalidades
3.2 Generación de un ID
3.2.1 Método static Guid.NewGuid
3.2.2 Constructores
3.3 Comparación de Guids
3.4 Miembros sobresalientes
4. Conclusiones
5. Literatura & Enlaces

1. Introducción

Otra de las estructuras sobresalientes en .NET Framework es Guid. Esta estructura representa un identificador globalmente único. Este artículo C# describe los conceptos fundamentales detrás de esta estructura, cómo generar un identificador, constructores disponibles, métodos static, representación literal, y uso del operador de igualdad ==.

2. Palabras Clave

  • .NET
  • Estructura
  • Guid
  • Identificador único
  • Operador de igualdad

3. Estructura Guid

3.1 Generalidades

Definida en el namespace System se halla la estructura Guid. Esta estructura ha sido diseñada para la representación de un identificador globalmente único. Es un valor de 16 bits, que una vez generado, es único en el mundo (Albahari, 2012).

Entre las aplicaciones interesantes de esta estructura están las de asignación de un ID único a un tipo de dato (e.g., serialización) o llaves primerias en tablas de bases de datos.

Hay aproximadamente 2^128 o 3.4 x 10^38 objetos Guid únicos (Albahari, 2012).

3.2 Generación de un ID

Existen dos mecanismos generación de un objeto Guid.

3.2.1 Método static Guid.NewGuid()

A través del método static Guid.New se genera un Guid único: 

Guid g = Guid.NewGuid();
Console.WriteLine(g.ToString());

Cuando este código es ejecutado en LINQPad, este es el resultado que se obtiene en este momento: 

3a137107-3908-49ae-bb16-d57433d94c7a

La anterior aclaración es a razón de que por cada ejecución se produce un Guid ID distinto.

3.2.2 Constructores

La estructura Guid cuenta hasta con 5 versiones sobrecargadas de su constructor ("Guid Structure", 2016)
Constructores sobrecargados de Guid
Figura 1. Constructores sobrecargados de Guid ("Guid Structure", 2016).
Por ejemplo, la primera versión Guid(Byte[]) inicializa una nueva instancia de Guid con un arreglo de 16 bits. O, con Guid(String) el objeto Guid se formatea como un número hexadecimal de 32 dígitos con separadores opcionales en las posiciones 8, 12, 16 y 20 (Albahari, 2012).

Ejemplo básico de uso

En este ejemplo de uso se crean dos objetos con la versión sobrecargada del constructor Guid(String):

Guid g1 = new Guid("{3a137107-3908-49ae-bb16-d57433d94c7a}");
Guid g2 = new Guid("3a137107-3908-49ae-bb16-d57433d94c7a");

Obsérvese con cuidado que los dos objetos Guid representan el mismo ID: los corchetes son opcionales.

3.3 Comparación de Guids

El operador de igualdad == es usado para la comparación de objetos Guid; así: 

Console.WriteLine("¿`g1` = `g2`?: {2}", g1, g2, g1 == g2);

El resultado de la evaluación g1 == g2 es igual a True. Esto es así debido a la aclaración dada al final de la subsección inmediatamente anterior.

3.4 Miembros sobresaliantes

Miembros como ToByteArray ("Guid.ToByteArray", 2016) -que permite convertir una objeto Guid a un arreglo de bytes- y la propiedad Guid.Empty ("Guid.Empty Field", 2016) -que se encarga de obtener un Guid con todos los valores igual a cero- son algunas de las funciones, método y propiedad respectivamente, interesantes que el programador puede encontrar en esta estrucutra.

4. Conclusiones

Se estudió la estructura Guid. Se comprendió que esta estructura es capaz de representar un valor globalmente único. Se estudiaron dos métodos de generación de un Guid, así como el uso del operador == para comparar Guids.

A partir del siguiente artículo se iniciará la serie Comparación de Igualdad.

5. Literatura & Enlaces

Albahari, J., Albahari, B. (2012). C# 5.0 in a Nutshell. United States: O'Reilly Media.
Guid Structure (System) (2016, julio 24). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.guid.aspx
Guid.NewGuid Method (System) (2016, julio 24). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.guid.newguid.aspx
Guid.ToByteArray Method (System) (2016, julio 24). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.guid.tobytearray.aspx
Guid.Empty Field (System) (2016, julio 24). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.guid.empty.aspx


O

No hay comentarios:

Publicar un comentario

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