70 votes

Comment obtenir la valeur de l'indice Enum en C#

En C, enums , équivaut en interne à un entier. Par conséquent, nous pouvons également traiter les types de données enum comme des entiers.

Comment faire la même chose avec C# ?

59voto

user1027167 Points 723

Une autre façon de convertir un Enum-Type en 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
}

Plus complexe mais indépendant des valeurs INT affectées aux valeurs enum.

11voto

Homam Points 8664

Par défaut, le type sous-jacent de chaque élément de l'énumération est entier.

 enum Values
{
   A,
   B,
   C
}

Vous pouvez également spécifier une valeur personnalisée pour chaque élément :

 enum Values
{
   A = 10,
   B = 11,
   C = 12
}
int x = (int)Values.A; // x will be 10;

Remarque : Par défaut, le premier énumérateur a la valeur 0.

7voto

Durgesh Pandey Points 1313

Vous pouvez le caster directement :

 enum MyMonthEnum { January = 1, February, March, April, May, June, July, August, September, October, November, December };

public static string GetMyMonthName(int MonthIndex)
{
  MyMonthEnum MonthName = (MyMonthEnum)MonthIndex;
  return MonthName.ToString();
}

Par exemple:

 string MySelectedMonthName=GetMyMonthName(8);
 //then MySelectedMonthName value will be August.

2voto

Akram Shahda Points 9902

Utilisez un casting simple :

 int value = (int) enum.item;

Reportez-vous à enum (référence C#)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X