Основы объектно-ориентированного программирования на языке C# book | Page 77
5.3 Перерахування
Значення типу перерахування записуються у текстi програми (за ме-
жами оголошення цього типу) як назва_типу.назва_значення , напри-
клад Direction.Left . Таке значення можна присвоювати змiннiй того
типу, до якого воно належить, наприклад:
x = Direction.Left; // присвоїти х значення "Лiво"
Значення одного типу перерахування можна порiвнювати: == озна-
чає, що значення рiвнi, != означає, що значення не рiвнi, наприклад:
if (x == Left.Direction)
Console.WriteLine("Left");
Також, вираз типу перерахування можна використовувати в опера-
торi switch для вибору дiı̈ в залежностi вiд значення виразу, напри-
клад:
using System;
class Program {
enum Direction { Left, Right }
static void Main()
{
Direction x = Direction.Left;
// надрукувати L, якщо лiво, або R, якщо право
switch (x) {
case Direction.Left: Console.WriteLine("L"); break;
case Direction.Right: Console.WriteLine("R"); break;
}
}
}
Неявнi перетворення значень одного типу перерахування на значен-
ня iншого типу перерахування не передбаченi, тому наведений нижче
код призводить до помилки компiляцiı̈:
using System;
class Program
{
enum Direction { Left, Right } // один тип
enum Direction2 { Left, Right } // iнший тип
static void Main()
{
Direction2 x = Direction.Left; // помилка (значення Direction.Left
має тип Direction)
Direction2 x = Direction2.Left; // вiрно
}
}
Кожний тип перерахування має так званий тип, що лежить в основi
ньго (англ. underlying type). Вiн є цiлим типом, i за замовчуванням
це є тип int . В пам’ятi комп’ютера значення типу перерахування
подається цiлим числом, типу, що лежить в основi вiдповiдного типу
перерахування.
77