[Básico]Enumerados con tipo distinto de Int - El blog de Javier Torrecilla

[Básico]Enumerados con tipo distinto de Int

Introducción:

En este post vamos a ver como utilizar otros tipos de datos numéricos dentro de una enumeración.

Si bien, no es un problema que nos vayamos a encontrar a menudo, pero que podamos realizarlo si lo necesitamos.

Al lio:

A la hora de definir nuestro enumerado tendremos que indicar uno de los siguientes valores:

- Byte

- SByte

- Short

- UShort

- Long

- ULong

- UInt

Ejemplo:

   1: public enum MyLongEnum  :long    
   2: {
   3:     Value = 1569874585236L
   4: }

Para que posteriormente podamos utilizar dicho valor desde nuestro código será necesario hacer una conversión:

   1: var myValue = (long)MyLongEnum.Value;

Espero que os sea de utilidad.

 

Saludos!

Published 14/5/2012 11:24 por Javier Torrecilla
Archivado en: ,
Comparte este post:
http://geeks.ms/blogs/jtorrecilla/archive/2012/05/14/b-225-sico-enumerados-con-tipo-distinto-de-int.aspx

Comentarios

# re: [Básico]Enumerados con tipo distinto de Int

;-)

Siempre he pensado que un soporte para enums de cadenas estaría bien, también...

Aunque claro, a ver quien es el guapo que cuadraría eso con el hecho de que los enums son tipos por valor... :P

Saludos!

Monday, May 14, 2012 3:24 PM por Eduard Tomàs i Avellana

# re: [Básico]Enumerados con tipo distinto de Int

Eduard, curiosa sugerencia, pero para tal caso creo que bastaria con crear un metodo Extensor a Enum, de tal manera que se pueda recuperar la cadena del decorado, asi:

public enum MiEnumerado :int

{

  [Valor 1]

  val1 = 1,

  [Valor 2]

  val2

.....

}

y luego podriamos recuperarlo asi:

console.write(MiEnumerado.val2.GetDescription());

Devolviendo

Valor 2.

El truco, que vi por ahi, esta en esto:

public static class EnumExt

{

public static string GetDescription(this Enum value)

{

var type = value.GetType();

var field = type.GetField(value.ToString());

var attributes = field.GetCustomAttributes(typeof(DescriptionAttribute), false);

return attributes.Length == 0 ? value.ToString() : ((DescriptionAttribute)attributes[0]).Description;

}

}

Monday, May 14, 2012 4:21 PM por Ernesto

# re: [Básico]Enumerados con tipo distinto de Int

Hola @Eduard totalmente de acuerdo creo que sería algo bastante interesante :D.

Ernesto hace tiempo publique esto: geeks.ms/.../tip-obtener-nombres-o-descripciones-de-un-enumerado-avanzado.aspx.

=p

Saludos y gracias por comentar!

Monday, May 14, 2012 7:03 PM por Javier Torrecilla