Получить значение int из enum в C #

new должен быть написан на Java для создания нового экземпляра объекта.

public class Foo {

    public void test() {
        final Foo foo1 = new Foo();
        final Foo foo2 = Foo();
    }

    public Foo Foo() {
        System.out.println("hello world");
        return this;
    }
}

Обратите внимание, что методы, начинающиеся с символа верхнего регистра, не рекомендуется на Java, чтобы избежать путаницы.

1615
задан Sae1962 27 February 2018 в 15:05
поделиться

7 ответов

Просто приведите перечисление, например

int something = (int) Question.Role;

Вышеупомянутое будет работать для подавляющего большинства перечислений, которые вы видите в дикой природе, поскольку базовый тип по умолчанию для перечисления - int .

Однако, как указывает cecilphillip , перечисления могут иметь разные базовые типы. Если перечисление объявлено как uint , long или ulong , оно должно быть приведено к типу перечисления; например, для

enum StarsInMilkyWay:long {Sun = 1, V645Centauri = 2 .. Wolf424B = 2147483649};

вы должны использовать

long something = (long)StarsInMilkyWay.Wolf424B;
2197
ответ дан 22 November 2019 в 20:09
поделиться
Question question = Question.Role;
int value = question.GetHashCode();

приведет к value == 2.

Это только верно, если перечисление соответствует в int

1
ответ дан 22 November 2019 в 20:09
поделиться
Question question = Question.Role;
int value = Convert.ToInt32(question);
2
ответ дан 22 November 2019 в 20:09
поделиться

Это проще, чем вы думаете - перечисление уже является int. Это просто нужно напомнить:

int y = (int)Question.Role;
Console.WriteLine(y); // prints 2
40
ответ дан 22 November 2019 в 20:09
поделиться
Question question = Question.Role;
int value = (int) question;

В результате будет значение == 2 .

83
ответ дан 22 November 2019 в 20:09
поделиться

Пример:

public Enum EmpNo
{
    Raj = 1,
    Rahul,
    Priyanka
}

И в приведенном ниже коде для получения значения перечисления:

int setempNo = (int)EmpNo.Raj; //This will give setempNo = 1

или

int setempNo = (int)EmpNo.Rahul; //This will give setempNo = 2

Перечисления будут увеличиваться на 1, и вы можете установить начальное значение. Если вы не установите начальное значение, ему будет изначально присвоено значение 0.

32
ответ дан 22 November 2019 в 20:09
поделиться

Поскольку перечисления могут иметь любой целочисленный тип ( байт , int , short и т. Д.), Более надежный способ чтобы получить базовое целое значение перечисления, нужно использовать метод GetTypeCode в сочетании с классом Convert :

enum Sides {
    Left, Right, Top, Bottom
}
Sides side = Sides.Bottom;

object val = Convert.ChangeType(side, side.GetTypeCode());
Console.WriteLine(val);

Это должно работать независимо от базового целочисленного типа.

291
ответ дан 22 November 2019 в 20:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: