[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!

3 comentarios en “[Básico]Enumerados con tipo distinto de Int”

  1. 😉
    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!

  2. 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;

    }

    }

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *