# 000123. Блочные конструкции. Перечисления

Блочные конструкции. Перечисления||wmysterio|wmysterio|<wmysterio@yandex.ru>|||Всем привет! Мы немного уйдёт от темы скриптинга GTA 4 и немного поговорим о c# как язык программирования. Этот урок я хотел бы посвятить перечислениям. Они же **enum**. Эта конструкция являет собой сборку данных, как правило одного типа. Объявляются они следующим образом:<br>

| <p>enum День {<br> /<br>     <em>строки перечисления</em><br>/<br>}<br></p> |
| --------------------------------------------------------------------------- |

Каждый элемент может иметь своё значение, причём тип данных не указывается. Мы можем хранить строку одного типа, а другая может быть вовсе другой. Между этими строками ставится запятая. Вот неплохой пример:<br>

| <p>enum День {<br>     Понедельник = 0,<br>     Вторник = 1,<br>     Среда = 2,<br>     Четверг = 3,<br>     Пятница = 4,<br>     Суббота = 5,<br>     Восресенье = 6<br>}</p> |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

Обращение к элементам перечисления такое же, как и у структуры:<br>

| <p><strong>День</strong>.Пятница<br></p> |
| ---------------------------------------- |

Но главное отличие от структуры в том, что мы можем явно указывать значение в конструкции, но не можем этого сделать в теле программы. Это можно сравнить с константами - мы жестко закрепляем значение перечисления в блоке и можем только прочитать данные, что в нём находятся. Ещё отличается перечисление от структуры тем, что мы можем указывать в качестве значения только следующие типы данных:

| <p>byte, sbyte, short, ushort, int, uint, long или ulong<br></p> |
| ---------------------------------------------------------------- |

То есть нельзя указать класс, структуру, массив или ещё какой-то тип данных, но для этого перечисления не созданы. Возникает вопрос - "Как распознать перечисление от той же структуры?" Распознать очень легко. Если вы пользуетесь редакторами типа Visual Studio, то это не составит труда. Как правило обозначаются перечисления следующим значком:\
![](https://github.com/wmysterio/scm-scripting-lessons/blob/main/_pu/1/39559150.png)\
Каким-же образом получить данные? Так как Enum вмещает произвольные данные, то нам необходимо преобразовать значение под нужный тип. Делается это по следующей формуле:<br>

| <p>Тип Переменная = (Тип)Выражение;<br></p> |
| ------------------------------------------- |

В нашем случаи это так:<br>

| <p>int i = (int)<strong>День</strong>.<strong>Вторник</strong>;<br></p> |
| ----------------------------------------------------------------------- |

Выражение в скобках указывает **в** кокой тип данных будет идти преобразование. После скобки "**)**" указываем **что конкретно** мы будем преобразовать. Такое преобразование следует делать только в том случаи, если вы наверняка знаете какой тип находится в поле перечисления\
\
Важно! Как правило имя перечисления и его поля задают латинскими символами. У меня получилось скомпилировать код с кирилицей, но всё же лучше перестраховаться.|496|1|0|39559150`png`19\`20||blochnye\_konstrukcii\_perechislenija|1392798790
