Преобразование Enum в массив Int в C#: изучение различных подходов

В C# перечисления — это мощные типы данных, позволяющие определять группу именованных констант. Иногда вам может потребоваться преобразовать перечисление в целочисленный массив в вашем коде. В этой статье блога мы рассмотрим различные методы достижения этого преобразования. Мы предоставим разговорные объяснения и примеры кода для каждого подхода. Давайте погрузимся!

Метод 1: преобразование значений перечисления с помощью LINQ и Cast
Первый метод включает использование LINQ и оператора Cast для преобразования значений перечисления в целочисленный массив. Вот пример:

enum Colors { Red, Green, Blue }
int[] colorsArray = Enum.GetValues(typeof(Colors)).Cast<int>().ToArray();

Объяснение: мы используем метод GetValues ​​для получения всех значений перечисления Colors. Затем, применяя оператор Cast, мы преобразуем каждое значение перечисления в целое число. Наконец, мы используем метод ToArray для преобразования результирующего IEnumerableв целочисленный массив.

Метод 2: преобразование значений перечисления с помощью цикла
Другой простой метод — перебирать значения перечисления и вручную преобразовывать каждое значение в целое число. Вот пример:

enum Days { Monday, Tuesday, Wednesday, Thursday, Friday }
Days[] daysValues = (Days[])Enum.GetValues(typeof(Days));
int[] daysArray = new int[daysValues.Length];
for (int i = 0; i < daysValues.Length; i++)
{
    daysArray[i] = (int)daysValues[i];
}

Объяснение: сначала мы извлекаем все значения перечисления с помощью GetValues ​​и приводим их к массиву типа перечисления. Затем мы создаем новый целочисленный массив той же длины, что и массив перечислений. Наконец, мы перебираем значения перечисления, приводя каждое из них к целому числу и сохраняя его в соответствующей позиции целочисленного массива.

Метод 3: преобразование значений перечисления с помощью Enum.GetNames и Enum.Parse
Этот метод включает преобразование имен перечислений в соответствующие целочисленные значения с использованием методов Enum.GetNames и Enum.Parse. Вот пример:

enum Sizes { Small, Medium, Large }
string[] sizeNames = Enum.GetNames(typeof(Sizes));
int[] sizesArray = new int[sizeNames.Length];
for (int i = 0; i < sizeNames.Length; i++)
{
    sizesArray[i] = (int)Enum.Parse(typeof(Sizes), sizeNames[i]);
}

Объяснение: Мы используем GetNames для получения массива строковых значений, представляющих имена перечислений. Затем мы создаем новый целочисленный массив той же длины, что и массив имен перечислений. Наконец, мы перебираем имена, используя Enum.Parse, чтобы преобразовать каждое имя в соответствующее целочисленное значение и сохранить его в целочисленном массиве.

В этой статье мы рассмотрели три различных метода преобразования перечисления в массив int в C#. Каждый метод предлагает уникальный подход для достижения желаемой конверсии. В зависимости от ваших конкретных требований и предпочтений в области кодирования вы можете выбрать метод, который лучше всего соответствует вашим потребностям. Не стесняйтесь экспериментировать с этими методами в своих проектах C#!