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!
😉
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… 😛
Saludos!
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;
}
}
Hola @Eduard totalmente de acuerdo creo que sería algo bastante interesante :D.
Ernesto hace tiempo publique esto: http://geeks.ms/blogs/jtorrecilla/archive/2011/05/04/tip-obtener-nombres-o-descripciones-de-un-enumerado-avanzado.aspx.
=p
Saludos y gracias por comentar!