Saltar al contenido

Cómo obtener el valor del índice Enum en C#

Ya no busques más por todo internet porque estás al sitio indicado, contamos con la respuesta que quieres recibir y sin liarte.

Solución:

En primer lugar, podría haber dos valores a los que te refieres:

Valor subyacente

Si está preguntando sobre el valor subyacente, que podría ser cualquiera de estos tipos: byte, sbyte, short, ushort, int, uint, long o ulong

Luego, simplemente puede convertirlo en su tipo subyacente. Suponiendo que es un intpuedes hacerlo así:

int eValue = (int)enumValue;

Sin embargo, también tenga en cuenta el valor predeterminado de cada elemento (el primer elemento es 0, el segundo es 1 y así sucesivamente) y el hecho de que a cada elemento se le podría haber asignado un nuevo valor, que puede no estar necesariamente en un orden particular. (Crédito a @JohnStock por el toque para aclarar).

Este ejemplo asigna a cada uno un nuevo valor y muestra el valor devuelto:

public enum MyEnum

    MyValue1 = 34,
    MyValue2 = 27


(int)MyEnum.MyValue2 == 27; // True

Valor de índice

El anterior es generalmente el valor requerido más comúnmente, y es lo que su pregunta sugiere que necesita, sin embargo, cada valor también tiene un valor de índice (al que se refiere en el título). Si necesita esto, consulte otras respuestas a continuación para obtener más detalles.

Otra forma de convertir un Enum-Type a un int:

enum E

    A = 1,   /* index 0 */
    B = 2,   /* index 1 */
    C = 4,   /* index 2 */
    D = 4    /* index 3, duplicate use of 4 */


void Main()

    E e = E.C;
    int index = Array.IndexOf(Enum.GetValues(e.GetType()), e);
    // index is 2

    E f = (E)(Enum.GetValues(e.GetType())).GetValue(index);
    // f is  E.C

Más complejo pero independiente de los valores INT asignados a los valores enumerados.

De forma predeterminada, el tipo subyacente de cada elemento de la enumeración es entero.

enum Values

   A,
   B,
   C

También puede especificar un valor personalizado para cada artículo:

enum Values

   A = 10,
   B = 11,
   C = 12

int x = (int)Values.A; // x will be 10;

Nota: Por defecto, el primer enumerador tiene el valor 0.

Te mostramos las reseñas y valoraciones de los usuarios

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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