Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Последнее обновление: 15.07.2017



Кроме примитивных типов данных в C# есть такой тип как enum или перечисление. Перечисления представляют набор логически связанных констант. Объявление перечисления происходит с помощью оператора enum. Далее идет название перечисления, после которого указывается тип перечисления - он обязательно должен представлять целочисленный тип (byte, int, short, long). Если тип явным образом не указан, то умолчанию используется тип int. Затем идет список элементов перечисления через запятую:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 enum Days { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }   enum Time : byte { Morning, Afternoon, Evening, Night }

В этих примерах каждому элементу перечисления присваивается целочисленное значение, причем первый элемент будет иметь значение 0, второй - 1 и так далее. Мы можем также явным образом указать значения элементов, либо указав значение первого элемента:

1 2 3 4 5 6 7 enum Operation { Add = 1, // каждый следующий элемент по умолчанию увеличивается на единицу Subtract, // этот элемент равен 2 Multiply, // равен 3 Divide // равен 4 }

Но можно и для всех элементов явным образом указать значения:

1 2 3 4 5 6 7 enum Operation { Add = 2, Subtract = 4, Multiply = 8, Divide = 16 }

Каждое перечисление фактически определяет новый тип данных. Затем в программе мы можем определить переменную этого типа и использовать ее:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 class Program { enum Operation { Add = 1, Subtract, Multiply, Divide } static void Main(string[] args) { Operation op; op = Operation.Add; Console.WriteLine(op); // Add   Console.ReadLine(); } }

В программе мы можем присвоить значение этой переменной. При этом в качестве ее значения должна выступать одна из констант, определенных в данном перечислении. То есть несмотря на то, что каждая константа сопоставляется с определенным числом, мы не можем присвоить ей числовое значение, например, Operation op = 1;. И также если мы будем выводить на консоль значение этой переменной, то мы получим им константы, а не числовое значение. Если же необходимо получить числовое значение, то следует выполнить приведение к числовому типу:

1 2 3 Operation op; op = Operation.Multiply; Console.WriteLine((int)op); // 3

Также стоит отметить, что перечисление необязательно определять внутри класса, можно и вне класса, но в пределах пространства имен:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 enum Operation { Add = 1, Subtract, Multiply, Divide } class Program { static void Main(string[] args) { Operation op; op = Operation.Add; Console.WriteLine(op); // Add   Console.ReadLine(); } }

Зачастую переменная перечисления выступает в качестве хранилища состояния, в зависимости от которого производятся некоторые действия. Так, рассмотрим применение перечисления на более реальном примере:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 class Program { enum Operation { Add = 1, Subtract, Multiply, Divide }   static void MathOp(double x, double y, Operation op) { double result = 0.0;   switch (op) { case Operation.Add: result = x + y; break; case Operation.Subtract: result = x - y; break; case Operation.Multiply: result = x * y; break; case Operation.Divide: result = x / y; break; }   Console.WriteLine("Результат операции равен {0}", result); }   static void Main(string[] args) { // Тип операции задаем с помощью константы Operation.Add, которая равна 1 MathOp(10, 5, Operation.Add); // Тип операции задаем с помощью константы Operation.Multiply, которая равна 3 MathOp(11, 5, Operation.Multiply);   Console.ReadLine(); } }

Здесь у нас имеется перечисление Operation, которое представляет арифметические операции. Также у нас определен метод MathOp, который в качестве параметров принимает два числа и тип операции. В основном методе Main мы два раза вызываем процедуру MathOp, передав в нее два числа и тип операции.

Структуры


Поделиться:



Последнее изменение этой страницы: 2019-04-19; Просмотров: 229; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.011 с.)
Главная | Случайная страница | Обратная связь