Как достать из enum число и присвоить его другой переменной?

187
09 марта 2018, 12:36

Как достать из enum число и присвоить это число другой переменной ? Учитывая что элемент enum будет выбираться программой рандомным образом

Answer 1

Просто сделайте приведение к типу int:

class Program
{
    enum SomeEnum
    {
        SomeValue,
        SomeValue2,
        SomeValue3,
        SomeValue4
    }
    static int getEnumValueAsInt(SomeEnum value)
    {
        return (int)value;
    }
    static void Main()
    {
        SomeEnum[] arr = new[]
        {
            SomeEnum.SomeValue2, SomeEnum.SomeValue3,
            SomeEnum.SomeValue, SomeEnum.SomeValue4
        };
        Random rand = new Random();
        int randv = rand.Next(1,4);
        Console.WriteLine(
            $"Current int value: {getEnumValueAsInt(arr[randv])}, Current enum: {arr[randv]}");
    }
}

Тест: IdeOne

Answer 2

Если у вас числа enum-ов идут по порядку, а так и есть если вы их вручную не пропишите. То для генерации случайного числа enum-ы вам вообще не нужны.

Допустим у вас есть

enum SomeEnum { a, b, c, d };

Мы знаем что всего 4 значения [0,1,2,3], итого берём случайное.

Random ran = new Random();
int randomInt = ran.Next(4);

Если ваши enum-ы идут не по порядку, тогда используйте Enum.GetNames для получения списка всех имён, и уже из этого списка выбирайте случайное значение.

READ ALSO
Вывод связанных таблиц в два DataGridView - C#

Вывод связанных таблиц в два DataGridView - C#

ЗдравствуйтеИмеется БД Access из двух связанных таблиц (связь один ко многим; одной строке таблицы1 соответствует несколько строк таблицы2)

217
C# Изменение указанных при компиляции значений программы

C# Изменение указанных при компиляции значений программы

У меня есть приложение с заданной переменной, к примеру

206
Не обрабатывается кнопка - Unity3D

Не обрабатывается кнопка - Unity3D

Не обрабатывается кнопка при ее нажатии, хотя скрипт к кнопке подключен, метод вызывается, но через breakpoint приложение не останавливает при...

167
В списке intellisense нет нужного метода

В списке intellisense нет нужного метода

Есть работающий класс, использующий MicrosoftOffice

168