Permalänk
Medlem

C# Enum fråga

Jag vill skapa en enkel Enum där flera olika definitioner ska ha samma Int-värden som jag har försökt illustrera nedan:

public enum ID { Test0 = 0, Test1 = 1, Misc = (2, 3, 4, 5) }

Är det möjligt?

Permalänk
Medlem
Skrivet av Zelloxy:

Jag vill skapa en enkel Enum där flera olika definitioner ska ha samma Int-värden som jag har försökt illustrera nedan:

public enum ID { Test0 = 0, Test1 = 1, Misc = (2, 3, 4, 5) }

Är det möjligt?

Tanken är att du ska använda enums för att slippa tänka på det bakomliggande värdet, exempelvis:

enum ID { Test0, Test1 } ... switch (SomeId) { case Test0: doSomething(); break; case Test1: doSomethingElse(); break; default: doMisc(); break; }

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Zelloxy:

Är det möjligt?

Det är inte möjligt att byta datatypen av en enum till något annat än de integrala typerna: http://msdn.microsoft.com/en-us/library/exx3b86w(v=VS.80).asp...

char är dock ett undantag och går inte att använda till en enum trots att det är en integral datatyp.

Din fråga verkar vara om det går att använda int[], men det är alltså omöjligt. Om du förklarar mer om vilket läge du hamnat i så kan vi säkert hjälpa dig att hitta en bättre lösning på problemet. Att lära sig programmera handlar inte om att tvinga språket att göra det man vill, så de bästa tipsen är ofta de som handlar om att lösa uppgiften på ett annat sätt.

Permalänk
Medlem
Skrivet av Zelloxy:

Jag vill skapa en enkel Enum där flera olika definitioner ska ha samma Int-värden som jag har försökt illustrera nedan:

public enum ID { Test0 = 0, Test1 = 1, Misc = (2, 3, 4, 5) }

Är det möjligt?

Varför vill du göra på detta sätt? Om något är Misc så är det Misc, då borde det inte finnas olika värden för att bestämma en Misc. Om det ska ske, så ska det ske innan det kommer till enum:en. Typ:
ID userInputEnum = IDEnumHelper.getEnumFromBadUserInput(inputValue);

Om du verkligen vill ha en "snygg" lösning för detta detta så kan du exempelvis göra en sealed class som fungerar på samma sätt och som tillåter din egna mappning av nycklar och värden.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem

Jag måste gjort en tankevurpa som ville ha en default i enumen. Nu gjorde jag så istället att när jag sätter den så har jag ett specifikt värde jag sätter om input-värdet ej finns definierat i enumen. Så det blev såhär istället:

if (Enum.IsDefined(typeof(ID), testvalue)) { //Gör det jag vill göra } else { variabel = ID.Misc; } public enum ID { Test0 = 0, Test1 = 1, Misc = 2 }

Permalänk
Medlem
Skrivet av Zelloxy:

Jag måste gjort en tankevurpa som ville ha en default i enumen. Nu gjorde jag så istället att när jag sätter den så har jag ett specifikt värde jag sätter om input-värdet ej finns definierat i enumen. Så det blev såhär istället:

if (Enum.IsDefined(typeof(ID), testvalue)) { //Gör det jag vill göra } else { variabel = ID.Misc; } public enum ID { Test0 = 0, Test1 = 1, Misc = 2 }

Måste verkligen "variabel" vara en int, kan den inte vara av typ ID istället?

Skickades från m.sweclockers.com

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Nej det behöver den inte. Det är en sträng jag får från en webservice som jag idag parsar till en int. Tycker det fungerar