sábado, 26 de marzo de 2016

Pregunta C# (15 de 20): ¿Cómo Obtener la Representación de Cadena de Caracteres de una Enumeración?

Índice

1. Introducción
2. Palabras Clave
3. Contexto
3.1 Enumeraciones
3.2 Enum.GetName()
3.3 ToString()
4. Obtención de la Representación de Cadena de Caracteres de una Enumeración
5. Recursos
6. Conclusiones
7. Literatura & Enlaces

1. Introducción

Las enumeraciones ofrecen un mecanismo sencillo para organizar valores relacionados con tipos de operaciones comunes; como por ejemplo: método de autenticación, el modo de presentación de un formulario, la ubicación en silla de un vuelo, colores, estilos de pantalla, entre otros. En esta pregunta C# se responde cómo obtener la representación de cadena de caracteres de una enumeración en lugar de su valor numérico.

2. Palabras Clave

  • Cadena de caracteres
  • Enumeración
  • Sistema unificado de tipos

3. Contexto

3.1 Enumeraciones

En los artículos siguientes se explica con amplio grado de detalle los conceptos teóricos detrás de las enumeraciones:
El método GetName() ("Enum.GetName Method", 2016) de Enum recupera el nombre dado a una constante para una tipo de enumeración. Estos son los argumentos requeridos por este método:
  • enumType: objeto Type que referencia la enumeración.
  • value: valor de la enumeración a obtener su representación de cadena de caracteres.
Ejemplo de uso:

Dada la enumeración Colores 

public enum Colores{
Rojo = 1,
Verde = 2,
Azul = 3
}

los nombres de las constantes Rojo, Verde y Azul puede ser obtenido del siguiente modo:

Console.WriteLine(Enum.GetName(typeof(Colores), Colores.Rojo)); // Rojo
Console.WriteLine(Enum.GetName(typeof(Colores), Colores.Verde)); // Verde
Console.WriteLine(Enum.GetName(typeof(Colores), Colores.Azul)); // Azul

3.3 ToString()

El método ToString() -que es parte del sistema unificado de tipos-, también permite obtener la representación de cadena de caracteres de una constante definida en una enumeración. Para el caso de la enumeración Colores de la sección 3.2, basta con invocar el método sobre una de las constantes; así:

Console.WriteLine(Colores.Rojo.ToString()); // Rojo
Console.WriteLine(Colores.Verde.ToString()); // Verde
Console.WriteLine(Colores.Azul.ToString()); // Azul

[Nota: Para saber más acerca de ToString(), se recomienda la lectura de este artículo: El Método ToString() en C#.]

4. Obtención de Cadena de Caracteres de una Enumeración

A continuación un ejemplo completo con ejecución de assembly que pone a prueba los métodos GetName() y ToString().

La enumeración Autenticación es declarada en las líneas 5-10 con las constantes 
  • FORMULARIO
  • WINDOWS, y
  • WEB
Con el método GetName() se obtiene el nombre de la constante FORMULARIO desde la sentencia 18. De manera análoga se obtiene la misma cadena pero usando el método ToString() en la línea 22.

Compilación:

csc /t:exe StringEnumeracion.cs

Ejecución assembly:

.\StringEnumeracion.exe

Demostración ejecución assembly (ideone.com): http://ideone.com/cHdwGh


Demostración ejecución assembly (local): 
Ejecución assembly StringEnumeracion.exe
Figura 1. Ejecución assembly StringEnumeracion.exe.

5. Recursos

Este es el vídeo en donde el equipo de expertos Gerry O'Brein y Paul Pardi de MVA, responden y explican esta pregunta:

6. Conclusiones

Se demostró que con los métodos Enum.GetName() y ToString() se puede obtener la representación de cadena de caracteres de las constantes de una enumeración. Además se observó que el método ToString() es más sencillo y directo que utilizar que GetName().

En la siguiente pregunta C# se responde a la pregunta de cómo hacer que una caja de texto acepte sólo valores numéricos.

7. Literatura & Enlaces

Top C# Questions Answered | Microsoft Virtual Academy (2016, marzo 26). Recuperado desde: https://mva.microsoft.com/en-US/training-courses/twenty-c-questions-answered-8298?l=pt8SjVYy_2104984382
Enumeraciones en C# - Parte 1 (2016, marzo 26). Recuperado desde: http://ortizol.blogspot.com.co/2014/05/enumeraciones-en-c-parte-1.html
Enumeraciones en C# - Parte 2 (2016, marzo 26). Recuperado desde: http://ortizol.blogspot.com/2014/05/enumeraciones-en-c-parte-2.html
Enumeraciones en C# - Parte 3 (2016, marzo 26). Recuperado desde: http://ortizol.blogspot.com/2014/05/enumeraciones-en-c-parte-3.html
Enumeraciones en C# - Parte 4 (2016, marzo 26). Recuperado desde: http://ortizol.blogspot.com/2014/05/enumeraciones-en-c-parte-4.html
Enumeraciones en C# - Parte 5 (2016, marzo 26). Recuperado desde: http://ortizol.blogspot.com/2014/05/enumeraciones-en-c-parte-5.html
Enum.GetName Method (Type, Object) (System) (2016, marzo 26). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.enum.getname%28v=vs.110%29.aspx
El Método ToString() en C# (2016, marzo 26). Recuperado desde: http://ortizol.blogspot.com/2014/04/el-metodo-tostring-en-c.html


V

No hay comentarios:

Publicar un comentario

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