Buscar este blog

sábado, 29 de octubre de 2011

VB. NET 2010 - Uso de Enumeración (Enumeration)

¿Qué es la enumeración? (Enumerar) (Lista) 
Llevando el concepto al mundo de los bits se puede decir que enumeración es un tipo de datos que podemos tratar como un conjunto de valores definidos.
Por ejemplo, el estado civil de una persona, hay valores definidos por la ley, tenemos que una persona puede ser: casado, soltero, viudo y divorciado.
Para tratar un conjunto de valores definidos como el ejemplo anterior, podemos utilizar Enumeration.
VB. NET proporciona una serie de constantes intrínsecas y el recurso Enumeration que hace la vida más fácil al programador.
Una Enumeration proporciona una manera fácil de trabajar con un conjunto de datos que se relacionan con las constantes. Por lo tanto, una Enumeration o Enum es un nombre simbólico para un conjunto de valores.
Definir una Enumeration en Visual Basic. NET es muy simple, es como definir una estructura.
Para declarar una Enumeration haga lo siguiente:
- Use la palabra clave Enum en la sección de declaración de una clase o módulo.
- Especificar los nombres para representar los valores permitidos.
- Defina el nivel apropiado de acceso mediante: Private, Protected, Friend Or Public.
Nota: No se puede declarar una enumeración dentro de un método.
La sintaxis utilizada para declarar es el siguiente:


Public [Private] Enum Nombre_de_la_Enumeracion
Enumeracion_1
Enumeracion_2
Enumeracion_3
Enumeracion_4
...
Enumeracion_N
End Enum


Vamos a dar un ejemplo: La siguiente es una Enumeration, al cual se le dio el nombre de DiaSemana.

Public Enum DiaSemana
Domingo
Lunes
Martes
Miércoles
Jueves
Viernes
Sábado
End Enum


Para realizar la declaración de una tipo Enumeration, se puede realizar de la siguiente manera:


Dim diaDescanso As DiaSemana = DiaSemana.Domingo


En .NET Framework las enumeraciones son tratadas como un tipo especial de datos. En verdad Enumeration mapea los datos de tipo entero.
Las enumeraciones son muy flexibles, ya que podemos especificar un tipo de dato entero para la enumeración (Byte, Short, Integer o Long).
El uso de Enumeration hace que el programa sea más legible, y con ello evitar errores en el programa.
Vamos a ver algunas operaciones relacionadas con el concepto de Enumeration en Visual Basic. NET.
Voy a utilizar Visual Basic 2010 Ultimate para crear los ejemplos de este artículo.
Crear un nuevo proyecto en Visual Basic 2010 Ultimate de tipo Windows Forms Application denominado VB_Enumeration.

1 - Declarar enumeradores
Los numeradores creados sin un tipo definido de datos, se interpretan como de tipo entero (int / Integer). Los enumeradores pueden soportar los tipos (byte/ Byte, sbyte / SByte, short / Short, ushort / UShort, int / Integer, uint /UInteger, long / Long, ulong / ULong). Ejemplo de declaración:

Public Enum BancoDatos As Byte
Access = 1
SqlServer = 2
MySql = 3
End Enum


2 - ¿Cómo obtener un miembro de una enumeración, dado su valor entero?
El problema es obtener el miembro de una enumeración conociendo su valor entero. En el ejemplo anterior se pretende obtener el nombre de Access, SqlServer y MySql a partir de los valores entero definidos, es decir a partir de 1, 2 o 3. Para el ejemplo anterior asignamos el valor entero 3 y deseamos obtener el miembro MySql. El diseño de la interfaz y el código usado para esto es el siguiente:



Public Class Form1
Public Enum BancoDatos As Byte
Access = 1
SqlServer = 2
MySql = 3
End Enum

Private Sub Button1_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ValorEnum As BancoDatos
Dim I As Integer
I = 3
ValorEnum = CType (I, BancoDatos)
ListBox1.Items.Add (ValorEnum)
End Sub
End Class

Conclusion: Sólo tiene que utilizar la función CType => CType (valor, NombreEnumeracion)

3- ¿Cómo obtener un miembro de una enumeración dado su nombre?

Para el ejemplo anterior hacer esto:  

Public Class Form1

Public Enum BancoDatos As Byte        
Access= 1       
SqlServer= 2        
MySql= 3
End Enum 

Private Sub Button1_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        
Dim ValorEnum As BancoDatos
ValorEnum = CType (System.Enum.Parse(GetType (BancoDatos),"SqlServer"),BancoDatos)
ListBox1.Items.Add(ValorEnum.ToString ())
End Sub
End Class


En este ejemplo estamos usando la clase System.Enum.Parse:
CType(System.Enum.Parse (GetType (BancoDatos), "SqlServer"), BancoDatos)
El valor devuelto para el ejemplo es: SqlServer.

Conclusión: Sólo tiene que utilizar la función CType en conjunto con el método Parse de la clase Enum.

4- ¿Cómo tratar con una selección de un valor realizado en una enumeración?
Para la enumeración definida anteriormente se pueden manejar la selección de un valor de enumeración en la siguiente forma:

Dim ValorEnum As BancoDatos
.....
Select Case ValorEnum
Case BancoDatos.Access
acesso_Access ()
Case BancoDatos.SqlServer
acesso_SQLServer ()
Case BancoDatos.MySql
acesso_MySql ()
Case Else
Exit Select
End Select


5- ¿Cómo convertir los enumeradores a cadena? Sólo tiene que usar el método el método GetName de la clase Enum:

Dim ValorEnum As BancoDatos = BancoDatos.MySql
Dim nombreDelEnumerador = System.Enum.GetName (GetType (BancoDatos),ValorEnum)


Si desea el programa fuente contactar a:cgprognet@gmail.com

2 comentarios:

  1. Buenisimo, aclaradas mis dudas con relación a la conversión del tipo Enum

    ResponderEliminar
  2. Buenisimo, aclaradas mis dudas con relación a la conversión del tipo Enum

    ResponderEliminar