Операции с перечислениями

С переменными перечисляемого типа можно выполнять арифметические операции (+, -, ++, --), логические поразрядные операции (^, &, |, ~), сравнивать их с помо­щью операций отношения (<, <=, >, >=, ==,!=) и получать размер в байтах (sizeof). При использовании переменных перечисляемого типа в целочисленных выражени­ях и операциях присваивания требуется явное преобразование типа. Переменной перечисляемого типа можно присвоить любое значение, представимое с помощью базового типа, то есть не только одно из значений, входящих в тело перечисления. Присваиваемое значение становится новым элементом перечисления. Пример:

Flags а = Flags.b2 | Flags.b4;

Console.WnteLine("a = {0} {0,2:Х}", а);

++а;

Console.WnteLine("a = {0} {0,2:Х}", а);

int х = (int)a;

Console.WnteLine("x = {0} {0,2:Х}", х);

Flags b = (Flags)65;

Console.WriteLine("b = {0} {0,2:X}", b);

Результат работы этого фрагмента программы ({0,2:Х} обозначает шестнадцатеричный формат вывода):

а = 10 0А

а = 11 0В

х = 11 В

b = 65 41

Другой пример использования операций с перечислениями приведен в листинге 9.10.

Листинг 9.10. Операции с перечислениями

using System;

namespace ConsoleApplication1

{

struct Боец

{

public enum Воинское_3вание

{

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

}

public string Фамилия; public Воинское_3вание Звание;

}

class Class1

{

static void Main()

{

Боец х;

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

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

for (int i = 1976; i < 2006; i += 5)

{

if (x.Звание < Боец.Воинское_3вание.Генерал)

++х.Звание;

Console.WriteLine("Год: {0} {1} {2}".

i, х.Звание, х.Фамилия);

}

}

}

}

Результат работы программы:

Год: 1976 Лейтенант Иванов

Год: 1981 Майор Иванов

Год: 1986 Полковник Иванов

Год: 1991 Генерал Иванов

Год: 1996 Генерал Иванов

Год: 2001 Генерал Иванов


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: