Основы объектно-ориентированного программирования на языке C# book | Page 78
5 Типи даних
Програмiст може вказати тип, що лежить в основi типу перера-
хування, написавши ’“ : тип_що_лежить_в_основi ” пiсля назви типу
перерахування в його оголошеннi, наприклад:
enum Direction : byte { Left, Right }
При такому оголошеннi, значення типу Direction при виконаннi
програми будуть подаватися цiлими числами типу byte i будуть за-
ймати 1 байт. Однак слiд зауважити, що тип перерахування, в основi
якого лежить тип byte не може мiстити бiльше 256 значень через
дiапазон типу byte .
При оголошеннi без явного вказання типу, що лежить в основi
enum Direction { Left, Right }
типом, що лежить в основi Direction буде int (за замовчуванням) i
значення типу Direction будуть подаються числами типу int (обся-
гом в 4 байти).
За замовчуванням, iменам, вказаним в оголошеннi типу перера-
хування (у порядку ı̈х перелiку в оголошеннi) вiдповiдають числа
0,1,2, ... типу, що лежить в його основi. Наприклад, значенню Di-
rection.Left типу Direction вiдповiдає число 0, значенню Directi-
on.Right вiдповiдає число 1.
Отримати число, що вiдповiдає значенню типу перерахування мо-
жна за допомогою явного перетворення типiв, як показано нижче:
Direction x = Direction.Right;
int value = (int) x; // отримати число, що вiдповiдає значенню x
Console.WriteLine(value); // результат: 1
Зворотне перетворення також можливе:
Direction x;
x = (Direction) 1; // отримати значення, що вiдповiдає числу 1
Console.WriteLine(x); // результат: Right
Слiд зазначити, що коли не всiм числам типу, що лежить в осно-
вi типу перерахування, вiдповiдають iменi в типi перерахування, то
змiннiй типу перерахування можна присвоı̈ти значення, що не має
iменi (це не є помилкою виконання або компiляцiı̈, але таку можли-
вiсть використовувати не рекомендується для попередження логiчних
помилок в програмi):
Direction x;
x = (Direction) 2; // отримати значення, що вiдповiдає числу 1
Console.WriteLine(2); // результат: 2 (не має iменi в типi Direction)
78