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