Читатели като вас помагат в подкрепа на MUO. Когато правите покупка чрез връзки на нашия сайт, ние може да спечелим комисионна за партньор. Прочетете още.

Enums са полезен тип данни, който ви позволява да дефинирате списък с именувани опции за променлива. Например, ако искате да съхранявате всеки ден от седмицата, можете да използвате enum, за да представите валидните стойности.

Enums правят вашия код по-лесен за четене и писане, като насърчават смислени имена и ограничават стойностите, които можете да използвате. Често е удобно да се използва оператор switch за обработка на възможните стойности на enum.

Можете да декларирате и използвате enum в много езици за програмиране, включително C#.

Как да декларирам Enum в C#

В C# обикновено декалирате enum на ниво пространство от имена. Например в C# конзолно приложение можете да декларирате своите enums като свойства на класа. Можете да видите пример в това GitHub репо.

класпрограма
{
изброяване делничен ден {
понеделник,
вторник,
сряда,
четвъртък,
петък,
събота,
неделя
}

статиченневалиденОсновен(низ[] аргументи)
{

}
}

instagram viewer

Когато декларирате 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 във вашия код, за да го направите по-четлив и по-малко податлив на грешки. Енумите също могат да бъдат много полезни, когато са сдвоени с други структури, като например речници.