C# Enum(Enumeration) med exempel
โก Smart sammanfattning
Upprรคkningar i C# definierar en namngiven uppsรคttning konstanta integralvรคrden, sรฅsom veckodagarna, vilket gรถr koden lรคttare att lรคsa och underhรฅlla. Nyckelordet enum deklarerar dessa fasta konstanter en gรฅng fรถr รฅteranvรคndning i ett program.

C# upprรคkning
En upprรคkning anvรคnds i alla programmeringssprรฅk fรถr att definiera en konstant uppsรคttning vรคrden. Till exempel kan veckodagarna definieras som en upprรคkning och anvรคndas var som helst i programmet. I C# definieras upprรคkningen med hjรคlp av nyckelordet 'enum'.
Lรฅt oss se ett exempel pรฅ hur vi kan anvรคnda nyckelordet "enum".
I vรฅrt exempel kommer vi att definiera en upprรคkning som kallas dagar, som kommer att anvรคndas fรถr att lagra veckodagarna. Fรถr varje exempel kommer vi att modifiera bara huvudfunktionen i vรฅr Program.cs-fil.
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 Fรถrklaring:-
- "upprรคkningen" data typ specificeras fรถr att deklarera en upprรคkning. Namnet pรฅ upprรคkningen รคr Dagar. Alla veckodagar anges som vรคrden fรถr upprรคkningen.
- Slutligen anvรคnds console.write-funktionen fรถr att visa ett av vรคrdena i upprรคkningen.
Om ovanstรฅende kod matas in korrekt och programmet kรถrs framgรฅngsrikt, kommer fรถljande utdata att visas.
Produktion:
Frรฅn utgรฅngen kan du se att "Sun"-vรคrdet fรถr upprรคkningen visas i konsolen.
Varfรถr anvรคnda enumer i C#?
Enumerationer gรถr ett program lรคttare att lรคsa, sรคkrare och enklare att underhรฅlla. Istรคllet fรถr att sprida ofรถrklarade tal, ibland kallade magiska tal, i hela koden, ger en enumeration varje vรคrde ett beskrivande namn som anger dess avsikt.
- Lรคsbarhet: Ett namn som Days.Fri รคr mycket tydligare รคn siffran 5, sรฅ alla som lรคser koden fรถrstรฅr betydelsen omedelbart.
- Typ sรคkerhet: En variabel som deklareras med en enum-typ kan bara innehรฅlla en av de definierade medlemmarna, vilket fรถrhindrar att ogiltiga vรคrden fรถrsvinnerping i.
- Underhรฅllbarhet: Relaterade konstanter finns pรฅ ett enda stรคlle, sรฅ att lรคgga till eller byta namn pรฅ ett vรคrde uppdaterar hela programmet konsekvent.
- Databindning: Ramverk som WPF och ASP.NET kan binda en enum till en rullgardinslista, vilket gรถr enums anvรคndbara fรถr att bygga anvรคndargrรคnssnitt.
Eftersom kompilatorn kontrollerar varje tilldelning mot de tillรฅtna medlemmarna, hjรคlper enums ocksรฅ till att upptรคcka misstag tidigt, innan programmet kรถrs.
Tilldela anpassade vรคrden till en C#-enum
Som standard tilldelar C# den fรถrsta enum-medlemmen vรคrdet 0 och รถkar varje efterfรถljande medlem med ett. I Days-upprรคkningen ovan รคr Sun lika med 0, Mon lika med 1 och Sat lika med 6. Du kan รฅsidosรคtta dessa standardvรคrden genom att tilldela explicita siffror.
- Explicita vรคrden: Att skriva enum Level {Low = 1, Medium = 5, High = 10} stรคller in varje medlem till ett valt nummer istรคllet fรถr standardsekvensen.
- Deluppgift: Om du bara tilldelar ett vรคrde till vissa medlemmar, fortsรคtter kompilatorn att numrera frรฅn det senast tilldelade vรคrdet fรถr de medlemmar som fรถljer.
- Underliggande typ: En enum lagrar sina medlemmar som int som standard, men du kan basera det pรฅ byte, short eller long fรถr att spara minne eller utรถka intervallet.
Anpassade vรคrden รคr anvรคndbara nรคr siffrorna mรฅste matcha ett externt system, till exempel databaskoder eller protokollkonstanter, sรฅ att enum speglar de verkliga uppgifterna exakt.
Hur man konverterar C# Enums till int, strรคng och flaggor
C# behรถver ofta flytta ett enumvรคrde till en annan form, till exempel genom att lagra det som ett tal eller lรคsa tillbaka det frรฅn text. Dessa konverteringar sker pรฅ nรฅgra standardsรคtt.
- Upprรคkning till heltal: En explicit konverter som (int)Days.Wed returnerar det underliggande heltalet, vilket รคr anvรคndbart fรถr lagring eller aritmetik.
- int till upprรคkning: Om man kastar i motsatt riktning, till exempel (Days)3, omvandlas ett tal tillbaka till matchande enum-medlem.
- Strรคng att upprรคkna: Enum.Parse och den sรคkrare Enum.TryParse konverterar ett namn som "Fri" till Days.Fri-medlemmen utan att lรคgga till ogiltig text.
- Upprรคkna till strรคng: Att anropa ToString pรฅ en medlem returnerar dess namn, sรฅ Days.Sun.ToString() producerar "Sun" fรถr visning eller loggning.
- Medlemmar pรฅ listan: Enum.GetValues โโoch Enum.GetNames returnerar varje vรคrde eller namn, vilket รคr anvรคndbart vid ifyllning av menyer eller validering av indata.
Nรคr en enum ska representera en kombination av alternativ snarare รคn ett, anvรคnd attributet Flags och ge varje medlem en potens av tvรฅ, till exempel 1, 2, 4 och 8. Du kan sedan kombinera medlemmar med den bitvisa ELLER-operatorn och testa fรถr ett specifikt alternativ med HasFlag-metoden.
Dessa konverteringstekniker lรฅter en enum rรถra sig snyggt mellan lรคsbara namn, lagrade nummer och kombinerade flagguppsรคttningar, keeping Resten av programmet รคr bรฅde skrivsรคkert och lรคtt att fรถlja.


