Основы объектно-ориентированного программирования на языке 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