Anuncios
Anuncios

Bienvenidos sean a este post, hoy veremos un tipo de dato basico pero que al igual que struct nos permite crear nuestros propios objetos a este tipo se lo denomina enum.

Este tipo de dato habitualmente tambien se lo denonima como enumerador porque posee la capacidad de enumerar todos los datos que recibe, veamos su sintaxis basica:

<modificador> enum nombre
{
.... valores ....
}

Recuerden que el modificador de acceso es opcional pero en caso de no asignarlo tomara como valor internal automaticamente, para entender este concepto un poco mejor vamos a crear un nuevo archivo al cual llamaremos enumerador.cs y le agregaremos el siguiente codigo:

enumerador.cs

using System;

enum meses
{
	Enero,
	Febrero,
	Marzo,
	Abril,
	Mayo,
	Junio,
	Julio,
	Agosto,
	Septiembre,
	Octubre,
	Noviembre,
	Diciembre
}

public class Program
{
	public static int Main()
	{
		Console.WriteLine(meses.Enero);
		Console.WriteLine((meses)1);
		return 0;
	}
}
Anuncios

En este codigo primero crearemos una variable de tipo enum al cual llamaremos meses y agregaremos dentro del mismo cada uno de los meses del año, los cuales van separados por comas, nuestro siguiente paso sera el cuerpo del Main donde mostraremos principalamente a meses y la posicion Enero, luego usaremos esta linea:

Console.WriteLine((meses)1);
Anuncios

Esta nos mostrara la posicion 1 de nuestro enum, si lo compilamos y lo probamos veremos esta salida:

C:\Users\tinchicus\Documents\Visual Studio 2019>enumerador.exe
Enero
Febrero

C:\Users\tinchicus\Documents\Visual Studio 2019>
Anuncios

En este caso no nos trajo dos veces Enero sino que nos trajo Febrero, esto es debido a que el lenguaje siempre toma como primera posicion a cero, para poder evitar esto debemos hacer la siguiente modificacion en el enum:

enum meses
{
	none,
	Enero,
	Febrero,
	Marzo,
	Abril,
	Mayo,
	Junio,
	Julio,
	Agosto,
	Septiembre,
	Octubre,
	Noviembre,
	Diciembre
}
Anuncios

En este caso agregamos un valor none como primero, el none equivale a nada y al estar como primer dato se asigna a la primera posicion, si lo compilamos y lo volvemos a probar veremos el sguiente resultado:

C:\Users\tinchicus\Documents\Visual Studio 2019>enumerador.exe
Enero
Enero

C:\Users\tinchicus\Documents\Visual Studio 2019>
Anuncios

Como podemos ver ahora funciono correctamente lo bueno de trabajar de esta manera es que podemos reemplazar el numero del mes con el nombre, veamos la siguiente modificacion:

	public static int Main()
	{
		for(int i=1; i<13; i++)
			Console.WriteLine((meses)i);
		return 0;
	}
Anuncios

Para esta modificacion tenemos un bucle for para contar de 1 a 12 y en el cuerpo del bucle for mostraremos en pantalla el valor en base a la numeracion, si lo probamos veremos la siguiente salida:

C:\Users\tinchicus\Documents\Visual Studio 2019>enumerador.exe
Enero
Febrero
Marzo
Abril
Mayo
Junio
Julio
Agosto
Septiembre
Octubre
Noviembre
Diciembre

C:\Users\tinchicus\Documents\Visual Studio 2019>
Anuncios

Pero si bien enum asigna un valor automaticamente nosotros tambien podemos ponerle un valor a cada posicion, por ejemplo vamos a crear un nuevo enum en Enumerador.cs:

enum codigos
{
	none = 0,
	ConexionEstablecida = 100,
	ConexionPerdida = 200,
	Desconocido = 300,
	ConexionLenta = 400
}
Anuncios

En este bloque asignamos por medio del igual un valor a un mensaje, por ejemplo dejamos que none sea igual a 0, y despues tenemos varios mensajes relacionados con un valor X que no necesariamente tiene que ser secuencial, nuestro siguiente paso sera la modificacion del cuerpo del Main de la siguiente manera:

	public static int Main()
	{
            	int codigo = 100;
            	Console.WriteLine((codigos)codigo);		
		return 0;
	}
Anuncios

En este ejemplo vamos a a emular que recibe un codigo de conexion, en este caso estableceremos el valor de 100, luego mostraremos en pantalla el valor que corresponde a ese estado de la conexion, para ello usamos a codigos y el valor que pasaremos es el de codigo y esto nos mostrara en pantalla el estado de” conexion”, compilemos y veamos su salida:

C:\Users\tinchicus\Documents\Visual Studio 2019>enumerador.exe
ConexionEstablecida

C:\Users\tinchicus\Documents\Visual Studio 2019>
Anuncios

Si probamos con otro valor en codigo variaremos el mensaje en pantalla, aqui un ejemplo:

C:\Users\tinchicus\Documents\Visual Studio 2019>enumerador.exe
ConexionPerdida

C:\Users\tinchicus\Documents\Visual Studio 2019>
Anuncios

Antes de finalizar veamos el codigo final de nuestra clase:

using System;

enum meses
{
	none,
	Enero,
	Febrero,
	Marzo,
	Abril,
	Mayo,
	Junio,
	Julio,
	Agosto,
	Septiembre,
	Octubre,
	Noviembre,
	Diciembre
}

enum codigos
{
	none = 0,
	ConexionEstablecida = 100,
	ConexionPerdida = 200,
	Desconocido = 300,
	ConexionLenta = 400
}

public class Program
{
	public static int Main()
	{
            	int codigo = 200;
            	Console.WriteLine((codigos)codigo);		
		return 0;
	}
}
Anuncios

Para ir finalizando, un buen uso de este tipo de dato es para almacenar constantes en una variable, por ejemplo como vimos con los meses o con codigos de error, como dijimos lo bueno de enum es permitir enumerar automaticamente a cada uno de los elementos o bien podemos asignarles un valor (como vimos en codigos de error), tambien vimos como usar la palabra none para que los elementos comiencen desde 1 y no desde 0, como vimos en el caso de los meses.

Anuncios

En resumen, hoy hemos visto como es enum, como es su sintaxis, para que se usa, que caracteristicas tiene, que posibilidades nos brinda, como podemos modificar valores de asignacion, algunos ejemplos practicos para verlo en accion, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

1.00 $