4 / 4 / 2
Регистрация: 05.07.2014
Сообщений: 57
Записей в блоге: 2
1

Зачем нужны перечисления enum?

23.09.2017, 21:51. Показов 11224. Ответов 5
Метки нет (Все метки)

Зачем нужны перечисления enum? Почему нельзя просто использовать массив? Объясните в чем плюсы перечислений.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.09.2017, 21:51
Ответы с готовыми решениями:

Перечисления в C# (как работать с enum)
Здравствуйте, не подскажите как работать с enum. У меня есть строка, содержащая операции и числа, я...

Вывести текст перечисления Enum
Такой вопрос. Есть такое enum chislo { Один, Два, Три} Как теперь вызвать слово "Два"? то есть я...

Перечисления enum. Обработка не зарезервированных значений
Имеется перечисление типа: enum Days : byte { Sun = 0, Mon = 1, Tue = 2, Wed = 3, Thu = 4, Fri =...

enum и Random(Вывод произвольного значения из перечисления)
Здравствуйте! Возник такой вопрос: есть перечисление, скажем enum Names ...

5
Нарушитель
3117 / 2213 / 1095
Регистрация: 14.08.2016
Сообщений: 7,584
23.09.2017, 22:14 2
в читабельности
например
C#
1
Color.Red
vs
C#
1
Color[124]
какой понятней?
1
4 / 4 / 2
Регистрация: 05.07.2014
Сообщений: 57
Записей в блоге: 2
23.09.2017, 22:31  [ТС] 3
Цитата Сообщение от Diamante Посмотреть сообщение
в читабельности
например
C#
1
Color.Red
vs
C#
1
Color[124]
какой понятней?
C#
1
Color[124] // красный цвет
Enum для более продвинутого написания кода используется - в этом его плюс? Начинающим программистам можно вообще его не использовать, а обходиться массивами с комментариями? Или есть ситуации где без перечислений не обойтись?
0
Эксперт .NET
5253 / 3453 / 1444
Регистрация: 09.05.2015
Сообщений: 8,403
23.09.2017, 22:59 4
Цитата Сообщение от svr Посмотреть сообщение
Начинающим программистам можно вообще его не использовать, а обходиться массивами с комментариями?
Начинающим лучше сразу учиться писать нормально.
Цитата Сообщение от svr Посмотреть сообщение
Или есть ситуации где без перечислений не обойтись?
Перечисление это просто именованная константа, при компиляции в место перечисления подставляется его значение.
В большинстве случаев enum используются чтобы избежать использования магических чисел в коде.

А еще перечисления очень удобны при выводе их имен куда-то. Без них бы пришлось создавать какой нибудь массив соответствия чисел и их имен...
C#
1
2
3
4
5
enum DayOfWeek
{
   Monday, // и т.д.
}
Console.WriteLine(DayOfWeek.Monday);
против
C#
1
2
3
4
const int Monday = 0;
// и т.д.
string[] daysOfWeek = new string[] { "Monday", /*и т.д.*/ };
Console.WriteLine(daysOfWeek[Monday]);
А есть еще атрибут [Flags] который изменяет поведение при вызове ToString() на enum...
1
4 / 4 / 2
Регистрация: 05.07.2014
Сообщений: 57
Записей в блоге: 2
24.09.2017, 00:43  [ТС] 5
Перечисляемый тип (сокращённо перечисле́ние, англ. enumeration, enumerated type) — в программировании тип данных, чьё множество значений представляет собой ограниченный список идентификаторов.

Критика
Тип перечисление является традиционным для развитых языков программирования, используется достаточно широко и часто воспринимается как нечто само собой разумеющееся. Тем не менее, этот тип также не обходится без критики со стороны теоретиков и практиков программирования. Так, при разработке языка программирования Оберон перечислимые типы попали в список возможностей, которые были удалены из языка. Никлаус Вирт, разработчик языка, назвал следующие причины:

«во всё возрастающем числе программ непродуманное использование перечислений … приводит к демографическому взрыву среди типов, что, в свою очередь, ведёт не к ясности программ, а к многословию»;
когда тип перечисление экспортируется модулем (то есть становится частью интерфейса) нарушается общее правило — команда экспорта типа экспортирует одновременно все его элементы, тогда как для всех остальных типов экспорт типа скрывает его внутреннюю структуру;
с точки зрения обеспечения удобочитаемости программ ничто не мешает вместо перечислимого типа использовать просто группу совместно определённых именованных констант, особенно при наличии таких языковых механизмов, как модули или классы.
С другой стороны, например, в Java, первоначально не содержащей перечислимого типа, этот тип был впоследствии введён из соображений не только удобства, но и надёжности: проблема использования вместо перечислений групп именованных констант в том, что отсутствует контроль со стороны компилятора как за уникальностью значений констант, так и за возможностью случайного присваивания переменным значений, не соответствующих ни одной из этих констант.
0
138 / 138 / 53
Регистрация: 14.06.2016
Сообщений: 467
24.09.2017, 08:52 6

Не по теме:

Цитата Сообщение от Diamante Посмотреть сообщение
Color.Red
на самом деле это get свойство, возвращающее экземпляр класса Color, а не enum



а еще не совсем понял, причём тут enum и массив?
enum, это как способ удобного и красивого оформления констант
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.09.2017, 08:52

Вывод значения перечисления enum в консоль в форматированном виде
Как реализовать корректный вывод? Есть namespace Library { public enum Weather { ...

Можно ли с помощью Random выбрать элемент перечисления Enum?
Доброе время суток, у меня возникла такая дилемма можно ли с помощью Random выбрать элемент...

Почему перечисления enum объявляются в пространстве имен а не, например, в классе?
Совсем недавно взялся я усиленно за C# и остановился на перечислениях. Почему они объявляются в...

Использование перечисления enum с пользовательсим типом, а не с базовыми int, byte, short, long
Всем привет! Создаю консольную игру-бродилку, по одному из заданий известной софтверной фирмы,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.