Перечисления — это полезный тип данных, который позволяет вам определить список именованных опций для переменной. Например, если вы хотите сохранить каждый день недели, вы можете использовать перечисление для представления допустимых значений.
Перечисления упрощают чтение и написание кода, поощряя осмысленные имена и ограничивая значения, которые вы можете использовать. Часто бывает удобно использовать оператор switch для обработки возможных значений перечисления.
Вы можете объявлять и использовать перечисления во многих языках программирования, включая C#.
Как объявить перечисление в C#
В C# вы обычно декальтерируете перечисления на уровне пространства имен. Например, в консольном приложении C# вы можете объявить свои перечисления как свойства класса. Вы можете посмотреть пример в этом репозиторий GitHub.
сортПрограмма
{
перечисление будний день {
Понедельник,
Вторник,
Среда,
Четверг,
Пятница,
Суббота,
Воскресенье
}
статическийпустотаОсновной(нить[] аргументы)
{
}
}
Когда вы объявляете перечисление, каждая опция получает целочисленное значение для представления своего индекса. По умолчанию первое значение в перечислении имеет значение индекса 0. Чтобы изменить это, вы можете указать свой собственный индекс для первого элемента при объявлении перечисления:
перечисление будний день {
Понедельник = 1,
Вторник,
Среда,
Четверг,
Пятница,
Суббота,
Воскресенье
}
В этом случае индекс первого элемента Понедельник начинается в 1. Индекс следующего элемента Вторник будет 2, и так далее.
Как получить доступ к значению Enum в C#
Существует множество различных способов доступа к значениям, хранящимся внутри перечислений. Значение, возвращаемое для каждой опции в перечислении, является индексом. Для этого примера значение Будний день. Пятница является 5.
Одним из способов получения имени перечисления является использование Перечисления. ПолучитьИмя() функция. Получается имя опции в индексе 5:
нить пятница = перечисление. ПолучитьИмя(тип(будний день), будний день. Пятница);
Консоль. НаписатьСтроку(«Слава Богу, что это» + пятница + "!");
// Вывод = Слава богу, сегодня пятница!
Вы также можете получить доступ к значению, используя его индекс. В этом случае значение с индексом 2 в перечислении дня недели (это вторник) будет сохранено в переменной:
Будний день вторник = (будний день)2;
Консоль. НаписатьСтроку("Сегодня " + вторник);
// Вывод = Сегодня вторник
Когда вы передаете перечисление в качестве аргумента в Консоль. ЗаписьЛинии(), нанизывать() Метод перечисления запускается автоматически. Это означает, что вместо того, чтобы печатать истинное числовое значение перечисления, которое 5, он напечатает строковое значение, Пятница.
Консоль. WriteLine (день недели. Четверг + "это новый" + Будний день. Пятница);
// Вывод = четверг - новая пятница
Вы также можете преобразовать или проанализировать тип данных в целое число как еще один способ сохранить индекс опции:
инт индекс понедельника = (инт)Будний день. Понедельник;
Консоль. WriteLine (индекс понедельника);
// Выход = 1
Как сравнивать перечисления в C#
В C# перечисления можно сравнивать с помощью операторов сравнения (==, !=, , <=, >=). Это позволит сравнить числовое значение параметров.
День недели1 = День недели. Понедельник;
День недели2 = День недели. Вторник;
если (день1 == день2)
{
Консоль. НаписатьСтроку(«Дни одинаковые».);
}
еще
{
Консоль. НаписатьСтроку(«Дни разные».);
}
В этом примере значение Weekday. Понедельник равен 1, а значение дня недели. Вторник 2, так что 1 == 2 сравнение не получится.
Другим способом сравнения перечислений является Равно() метод:
если (день1.Равно (день2))
{
Консоль. НаписатьСтроку(«Дни одинаковые».);
}
еще
{
Консоль. НаписатьСтроку(«Дни разные».);
}
Вы также можете использовать оператор переключения С# для сравнения значения с каждым параметром в перечислении. В этом примере код попадет в случай среды:
День недели valueToCompare = День недели. Среда;
выключатель (значение для сравнения)
{
случай Будний день. Понедельник:
Консоль. НаписатьСтроку("Мне нужен кофе.");
перерыв;
случай Будний день. Вторник:
Консоль. НаписатьСтроку("Мне нужен кофе.");
перерыв;
случай Будний день. Среда:
Консоль. НаписатьСтроку("Мне нужен кофе.");
перерыв;
случай Будний день. Четверг:
Консоль. НаписатьСтроку(«Четверг — новая пятница!»);
перерыв;
случай Будний день. Пятница:
Консоль. НаписатьСтроку("Слава богу, сегодня пятница!");
перерыв;
случай Будний день. Суббота:
Консоль. НаписатьСтроку("Мой любимый день!");
перерыв;
случай Будний день. Воскресенье:
Консоль. НаписатьСтроку("Мой другой любимый день!");
перерыв;
по умолчанию:
Консоль. НаписатьСтроку(«Неверный день недели».);
перерыв;
}
Как перебирать перечисления в C#
Вы можете перебирать перечисления в C#, используя перечисление. ПолучитьЗначения() метод, который возвращает массив всех значений перечисления. Этот фрагмент кода печатает каждый день недели, включая понедельник, вторник и т. д.:
для каждого (будний день в перечисление. ПолучитьЗначения(тип(будний день)))
{
Консоль. НаписатьСтроку((инт)день); // Чтобы напечатать индекс
Консоль. WriteLine (день); // Чтобы напечатать текстовое значение
}
Вы также можете перебирать значения перечисления, используя перечисление. ПолучитьИмена() метод. Он возвращает список строковых значений для представления имен параметров перечисления:
для каждого (нить имя в перечисление. ПолучитьИмена(тип(будний день)))
{
инт индекс = (инт)(День недели) Перечисл. Разобрать(тип(день недели), имя);
Консоль. WriteLine (индекс); // Чтобы напечатать индекс
Консоль. ЗаписьЛиния (имя); // Чтобы напечатать текстовое значение
}
Использование перечислений в C#
Вы можете использовать перечисления в своем коде, чтобы сделать его более читабельным и менее подверженным ошибкам. Перечисления также могут быть очень полезны в сочетании с другими структурами, такими как словари.