Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2016, 14:17   #1
BadCats
Пользователь
 
Аватар для BadCats
 
Регистрация: 31.01.2016
Сообщений: 67
Радость Перечисления. Метод GetValue в цикле.

всем привет, имеется следующий пример:

Код:
class Program
    {
        static void Main()
        {
            // Enum.GetValues() - возвращает экземпляр System.Array, при этом каждому элементу массива 
            // будет соответствовать член указанного перечисления.

            // Помещаем в массив элементы перечисления.
            Array array = Enum.GetValues(typeof(EnumType));

            // Получаем информацию о количестве элементов в массиве.
            Console.WriteLine("Это перечисление содержит {0} членов \n", array.Length);

            // Вывод на экран всех элементов перечисления
            for (int i = 0; i < array.Length; i++)
            {
                Console.WriteLine("Имя константы: {0}, значение {0:D}", array.GetValue(i));
            }

            // Delay.
            Console.ReadKey();
        }
    }
вот само перечисление:

Код:
enum EnumType
    {
        Zero,  // = 0 
        One = 1,
        one = One,
        Two = 2,
        Three, // = 3
        Four,  // = 4
        Five = 5,
        //Six,
        Seven,
        Eight = 8,
        Nine,
        Ten = 10,
        Infinite = 255
    }
у меня вопрос по поводу цикла

Код:
  // Вывод на экран всех элементов перечисления
            for (int i = 0; i < array.Length; i++)
            {
                Console.WriteLine("Имя константы: {0}, значение {0:D}", array.GetValue(i));
            }
В переменной arrray типа Array содержится все элементы перечисления EnumType, которые представленны в виде таблицы как и любой другой массив, а метод GetValue по i-му номеру вытягивает данные о элементе массива констант записанного в переменную array.

Так вот, этот массив создается как одномерный или как двумерный - т.к константа перечисления состоит из имени и значения?
BadCats вне форума Ответить с цитированием
Старый 05.04.2016, 14:43   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Двумерный массив это когда каждый элемент массива является массивом. То есть arr[i] вернуло бы один из массивов, а arr[i][j] значение.
Раз вы используете только один индекс/GetValue для вывода значение, то массив явно не двумерный

То есть видимо можно считать, что в массиве просто хранятся "целые" элементы енума, а не отдельно имена и числа. Как например при создании класса/структуры с 42 полями массив его экземпляров не станет 42-мерным.

(вообще я не особо в курсе как енумы в C#/.NET устроены, знания о них кроме стандартного их использования как-то не требовались)



В названии темы стоит указывать язык если создаете тему в этом разделе. А еще лучше создавать их в специальном разделе (http://programmersforum.ru/forumdisplay.php?f=59 для C#) если это не 100501-я тема типа "Напишите за меня пузырьковую сортировку".
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 05.04.2016, 17:18   #3
max_prorok
Форумчанин
 
Регистрация: 06.10.2011
Сообщений: 181
По умолчанию

Насколько я понял эти нумерации, то там определенной переменной соответствует какое-то интовое значение, которые идут по-порядку. В некотором смысле нумерацию можно рассматривать как словарь, где каждому значению ключа (имя константы) соответствует одно целочисленное значение.

Ну или если будет проще понять, то это можно рассматривать как массив структур с одним полем типа string (имя константы) и вторым типа int (соответствующее этому имени целочисленное значение).

Последний раз редактировалось max_prorok; 05.04.2016 в 17:20.
max_prorok вне форума Ответить с цитированием
Старый 06.04.2016, 08:18   #4
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Enum.GetNames
Получаем имена элементов енума отдельным массивом строк, в этих строках только имена значений, без предшествующего наименования самого енума и точки (как в коде всегда пишется)
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос - почему, вызывая много раз метод repaint() в цикле, картинка в окне через некоторое время начинает моргать? Kagur Общие вопросы по Java, Java SE, Kotlin 1 17.07.2013 08:25
Метод вращения Якоби (ошибка в цикле) crawter Помощь студентам 0 14.11.2012 19:43
ENUM-перечисления.Вовпрос? Goody Общие вопросы C/C++ 5 18.04.2012 01:44
Проблемы с GetValue Pashok1 Microsoft Office Excel 3 04.03.2010 19:27
Перечисления в классах (С++) Александр Елис Помощь студентам 1 22.01.2010 17:10