Как получить значение Enum Index в C # - PullRequest
45 голосов
/ 02 июня 2011

В C enums внутренне равно целому числу. Поэтому мы можем также рассматривать типы данных enum как целые.

Как добиться того же с C #?

Ответы [ 7 ]

75 голосов
/ 02 июня 2011

Просто приведите его к int, как показано ниже:

int eValue = (int)enumValue;

Вот еще один пример, который показывает вам, как установить их внутренние целочисленные значения:

public enum MyEnum
{
    MyValue1 = 1,
    MyValue2 = 2
}

(int)MyEnum.MyValue2 == 2; // True
32 голосов
/ 16 июля 2015

Другой способ преобразовать тип Enum в тип 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
}

Более сложный, но независимый от значений INT, присвоенных значениям перечисления.

10 голосов
/ 02 июня 2011

По умолчанию основным типом каждого элемента в перечислении является целое число.

enum Values
{
   A,
   B,
   C
}

Вы также можете указать пользовательское значение для каждого элемента:

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

Примечание. По умолчанию первый перечислитель имеет значение 0.

6 голосов
/ 15 октября 2016

Вы можете напрямую разыграть его:

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();
}

Например:

string MySelectedMonthName=GetMyMonthName(8);
 //then MySelectedMonthName value will be August.
2 голосов
/ 02 июня 2011

Использовать простое литье:

int value = (int) enum.item;

См. enum (C # Reference)

1 голос
/ 02 июня 2011
using System;
public class EnumTest 
{
    enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

    static void Main() 
    {

        int x = (int)Days.Sun;
        int y = (int)Days.Fri;
        Console.WriteLine("Sun = {0}", x);
        Console.WriteLine("Fri = {0}", y);
    }
}
1 голос
/ 02 июня 2011

Используйте приведение:

public enum MyEnum : int    {
    A = 0,
    B = 1,
    AB = 2,
}


int val = (int)MyEnum.A;
...