Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие КНЕУ.doc
Скачиваний:
24
Добавлен:
07.03.2016
Размер:
3.9 Mб
Скачать

9.7. Перелічення

При написанні програм часто виникає потреба визначити декілька зв'язаних між собою іменованих констант, при цьому їх конкретні значення можуть бути не важливі. Для цього зручно скористатися переліченим типом даних, всі можливі значення якого задаються списком цілочисельних констант, наприклад:

enum Menu { Read, Write, Append, Exit }

enum Веселка { Червоний, Оранжевий, Жовтий, Зелений, Синій, Фіолетовий }

Для кожної константи задається її символічне ім'я. За умовчанням константам привласнюються послідовні значення типу int, починаючи з 0, але можна задати і власні значення, наприклад:

enum Nums { two = 2, three, four, ten = 10, eleven, fifty = ten + 40 };

Константам three і four привласнюються значення 3 і 4, константі eleven - 11. Імена констант усередині кожного перелічення мають бути унікальними, а значення можуть бути різними.

Перевага перелічення перед описом іменованих констант полягає в тому, що зв'язані константи наочніше; крім того, компілятор виконує перевірку типів, а інтегроване середовище розробки підказує можливі значення констант, виводячи їх список.

Синтаксис перелічення:

[атрибути ] [специфікатори ] enum ім'я _ перелічення [ : базовий_тип ] тіло _ перелічення [ ; ]

Специфікатори перелічення мають такий же сенс, як і для класу, причому допускаються тільки специфікатори new, public, protected, internal і private.

Базовий тип - це тип елементів, з яких побудовано перелічення. За умовчанням використовується тип int, але можна задати тип і явним чином, вибравши його серед цілочисельних типів (окрім char), а саме: byte, sbyte, short, ushort, int, uint, long і ulong. Необхідність в цьому виникає, коли значення констант неможливо або незручно представляти за допомогою типу int.

Тіло перелічення складається з імен констант, кожною з яких може бути привласнене значення. Якщо значення не вказане, воно обчислюється збільшенням одиниці до значення попередньої константи. Константи за умовчанням мають специфікатор доступу public.

Перелічення часто використовуються як вкладені типи, ідентифікуючи значення з якого-небудь обмеженого набору. Приклад такого перелічення приведений в лістингу 9.10.

Лістинг 9.10. Приклад перелічення

usingSystem;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace examp64

{

struct Боец

{

public enum Воинское_Звание

{ Рядовой, Сержант, Лейтенант, Майор, Полковник, Генерал }

public string Фамилия;

public Воинское_Звание Звание;

}

class Program

{

static void Main(string[] args)

{

Боец x;

x.Фамилия = " Иванов";

x.Звание = Боец.Воинское_Звание.Сержант;

Console.WriteLine(x.Звание + " " + x.Фамилия);

}

}

}

Результат роботи програми: Сержант Іванов

Перелічення зручно використовувати для представлення бітових прапорів, наприклад:

enum Flags : byte

{

b0, b1. b2, b3 = 0x04, b4 = 0x08, b5 = 0x10, b6 = 0x20, b7 = 0x40

}