Entwickler-Ecke

C# - Die Sprache - Enums als string-case in switch verwenden?


erfahrener Neuling - Fr 05.08.16 14:13
Titel: Enums als string-case in switch verwenden?
Hallo,

wie kann ich einen string mit enum-Werten in einem switch vergleichen?

so geht's nicht:

C#-Quelltext
1:
2:
3:
switch(myString)
{
    case MyEnum.ABC.ToString():  //erkennt's nicht als Konstante

Geht das überhaupt?

Danke und Grüße
Julian


Ralf Jansen - Fr 05.08.16 14:28

Indem du erst aus dem string den Enum machst und dann im switch mit den Enums vergleichst.


C#-Quelltext
1:
2:
3:
4:
5:
switch((MyEnum)Enum.Parse(typeof(MyEnum), myString))
{
    case MyEnum.ABC:
    ...
}


erfahrener Neuling - Fr 05.08.16 14:52

Danke so geht's.

Eine Frage noch: Warum gings denn nicht mit .ToString()? Kommt doch eigntl auch n string dabei raus..

EDIT: Ok weil switch nur konstante Werte akzeptiert :/


Ralf Jansen - Fr 05.08.16 14:58

Zitat:
Eine Frage noch: Warum gings denn nicht mit .ToString()? Kommt doch eigntl auch n string dabei raus..


Aber erst zur Laufzeit die case Zweige eines switches sollten aber zur Compilezeit feststehen.