C# Enum(изброяване) с пример
⚡ Умно обобщение
Изброяванията в C# дефинират именуван набор от константни интегрални стойности, като например дните от седмицата, което прави кода по-лесен за четене и поддръжка. Ключовата дума enum декларира тези фиксирани константи веднъж за повторна употреба в програмата.

C# изброяване
Изброяването се използва във всеки език за програмиране, за да се дефинира постоянен набор от стойности. Например, дните от седмицата могат да бъдат определени като изброяване и използвани навсякъде в програмата. В C# изброяването се дефинира с помощта на ключовата дума 'enum'.
Нека видим пример за това как можем да използваме ключовата дума „enum“.
В нашия пример ще дефинираме изброяване, наречено дни, което ще се използва за съхраняване на дните от седмицата. За всеки пример ще модифицираме само основната функция в нашия файл Program.cs.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { enum Days{Sun,Mon,tue,Wed,thu,Fri,Sat}; static void Main(string[] args) { Console.Write(Days.Sun); Console.ReadKey(); } } }
Code Обяснение:
- "преброяването" тип данни е посочено за деклариране на изброяване. Името на изброяването е Дни. Всички дни от седмицата са посочени като стойности на изброяването.
- Накрая функцията console.write се използва за показване на една от стойностите на изброяването.
Ако горният код е въведен правилно и програмата е изпълнена успешно, ще се покаже следният изход.
Изход:
От изхода можете да видите, че стойността „Sun“ на изброяването се показва в конзолата.
Защо да използваме преброявания (enums) в C#?
Изброяванията правят програмата по-лесна за четене, по-безопасна и по-лесна за поддръжка. Вместо да разпръсква необясними числа, понякога наричани магически числа, из целия код, изброяването дава на всяка стойност описателно име, което посочва нейното предназначение.
- Точност: Име като Days.Fri е далеч по-ясно от числото 5, така че всеки, който чете кода, веднага разбира значението.
- Безопасност на типа: Променлива, декларирана с тип enum, може да съдържа само един от дефинираните членове, което предотвратява изпускането на невалидни стойности.ping инча
- Поддържаемост: Свързаните константи се намират на едно място, така че добавянето или преименуването на стойност актуализира цялата програма последователно.
- Обвързване на данни: Фреймуъркове като WPF и ASP.NET могат да обвържат enum с падащ списък, което прави enum-ите полезни за изграждане на потребителски интерфейси.
Тъй като компилаторът проверява всяко присвояване спрямо разрешените членове, изброяванията също помагат за ранно откриване на грешки, преди програмата да се изпълни.
Присвояване на персонализирани стойности на C# Enum
По подразбиране C# присвоява на първия член на изброяването стойност 0 и увеличава всеки следващ член с едно. В изброяването Days по-горе, Sun е равно на 0, Mon е равно на 1, а Sat е равно на 6. Можете да промените тези стойности по подразбиране, като присвоите изрични числа.
- Изрични стойности: Записването на enum Level {Low = 1, Medium = 5, High = 10} задава на всеки член избрано число вместо последователността по подразбиране.
- Частично задание: Ако присвоите стойност само на някои членове, компилаторът ще продължи номерирането от последната присвоена стойност за следващите членове.
- Базов тип: Един enum съхранява членовете си като int по подразбиране, но можете да го базирате на byte, short или long, за да спестите памет или да разширите диапазона.
Персонализираните стойности са полезни, когато числата трябва да съвпадат с външна система, като например кодове на база данни или константи на протоколи, така че изброяването да отразява точно реалните данни.
Как да конвертирате C# Enums в int, string и Flags
C# често трябва да премести стойност от enum в друга форма, например да я съхрани като число или да я прочете обратно от текст. Тези преобразувания се случват по няколко стандартни начина.
- Преброяване към цяло число: Изрично преобразуване, като например (int)Days.Wed, връща основното цяло число, което е полезно за съхранение или аритметика.
- int към enum: Преобразуването в обратната посока, например (Days)3, връща числото обратно в съответстващия член на изброяването.
- Низ за изброяване: Enum.Parse и по-безопасният Enum.TryParse конвертират име като „Fri“ в члена Days.Fri, без да хвърлят невалиден текст.
- Преброяване към низ: Извикването на ToString за който и да е член връща неговото име, така че Days.Sun.ToString() генерира „Sun“ за показване или регистриране.
- Членове на обявата: Enum.GetValues и Enum.GetNames връщат всяка стойност или име, което помага при попълване на менюта или валидиране на входни данни.
Когато дадено изброяване трябва да представлява комбинация от опции, а не една, приложете атрибута Flags и дайте на всеки член степен две, например 1, 2, 4 и 8. След това можете да комбинирате членовете с побитовия оператор OR и да тествате за конкретна опция с метода HasFlag.
Тези техники за преобразуване позволяват на изброяване да се движи гладко между четливи имена, съхранени числа и комбинирани набори от флагове, запазвайкиping останалата част от програмата е едновременно типово безопасна и лесна за следване.


