Hejsan, när (och varför kanske) ska man använda enumeration (enum) egentligen? Och när är det bättre med nåt annat? (Vilka är alternativen?) Har gjort ett (bok) exempel o det verkar vara lite som array eller? Har kollat på nätet o det finns mänger med kod exempel men hittar inte nåt som förklarar när det är bra o använda?
(det här behöver ju inte va i .NET forumet iofs men boken jag läste för närvarande handlade om C# så.. : )
Nån som kan sammanfatta lite kort? :)
fredrikMedlem sedan dec. 19991 072 inlägg Jag använder själv "Enum" för att få en bättre struktur och läsbarhet i min kod. Om vi tänker oss att vi har en metod som kan spara sin data på olika sätt:
- Till Databas
- Till Textfil
- Till Minnet
Då skulle vi kunna ha en inparameter som "Integer" och underförstått spara till Databas om det är 0, Textfil om det är 1 och Minnet om den är 2.
Rent strukturmässigt är inte detta så där jättebra, då det lätt kan bli fel. Istället kan vi nu skapa en Enum: (Koden är i VB.NET)
Public Enum SaveType
ToDB = 0
ToTextFile = 1
ToMemory = 2
End Enum
Vår metod för att spara data kan då se ut:
Private Sub SaveData(ByVal Type As SaveType)
Select Case Type
Case SaveType.ToDB
'Kod för att spara till DB
Case SaveType.ToTextFile
'Kod för att spara till Textfil
Case SaveType.ToMemory
'Kod för att spara till Minnet
End Select
End Sub
När du sen anropar metoden så skriver du helt enkelt:
Call SaveData(SaveType.ToMemory)
Om du sen använder Visual Studio får du även upp en lista på alla tänkbara "Enums" när du ska skriva inparametrarna, så du slipper hålla reda på namnet på dem själv.
Så, en Array är det inte, utan mer en konstantlista.
Fredrik: Tack, precis det svar jag var ute efter ! Så, man kan sitta o koda utan enum o slut-effekten blir densamma, men för dig som programmerare får man helt enkelt bättre struktur på koden såsom du visade..? okay, super.. då vet jag.. kändes tidigare meningslöst o lära sig enums utan att veta dess egentliga syfte :)
Jon: Tack för länken också.. har gått igenom den o ska prova exemplena där :)
GladhMedlem sedan maj 20012 812 inlägg Det finns en viktigare aspekt än just att man får bättre struktur och det är att man tvingar användaren av ens kod att skicka i ett förutbestämt värde.
En Enum skickar ju bara runt en Int. Och i fredriks exempel så kan Int:en anta värde 1,2,3 men om du har en funktion som tar emot en Int så kan man ju skicka in andra värden än 1,2,3.
Med användadet av Enums tvingar du alltså den person som använder dina komponenter att skicka in rätt värde och du slipper på detta vis en potetial felkälla.
- Magnus
Gladh: aha, intressant aspekt... hmm.. så menar du, om vi tar Fredriks exempel, att om det hade stått t.ex.
Private Sub SaveData(ByVal Type As Integer)//istället för as SaveType
'kod
End Sub
så skulle man behöva ha en IF som kollar att int:en ligger inom rätt intervall (mellan 1-3) medan om funktionen tar emot en enum istället så behövs inte dennna koll, därav bättre säkerhet..?
Kanske ute o cyklar.. du kanske menade nåt helt annat..? förklara gärna om du har tid :)
Tycker att böckerna tydligt borde förklara sånt här först innan de tar upp massa exempel om * hur * man använder nåt.. tack för input !
GladhMedlem sedan maj 20012 812 inlägg Du har förstått det helt rätt.
Eftersom man måste skicka in en Enum i funktionen, och det är du som har skapat Enumen så har du begränsat vad man får skicka in i funktionen.
Du slipper alltså den extra check att man har skickat in en INT med värde 1-3 eftersom den enum som skickas in endast kan ha värdet 1-3
- M
Tack för alla svaren.. de hjälpte verkligen :)