Sicher kam der eine oder andere Programmierer schon einmal in die Situation durch ein Enum zu iterieren, um die Werte einfach nur irgendwo in der richtigen Reihenfolge anzuzeigen. Zum Beispiel: enum MyEnum{Montag, Dienstag, Mittwoch, Donnerstag, Freitag};
Nichts leichter als das, da gibt es ja die verschiedensten Möglichkeiten, z.B.:
A) Umständlich
bzw.
B) Lesbar
oder C) über die Enum.GetNames() Methode
Gut und schön, das alles funktioniert leider nur solange korrekt, bis man den Werten eigene Integerwerte zuweist. Gerade Methode B) ist sehr anfällig auf Wert-Veränderungen.
Bereits bei einer kleinen Änderungen wie: enum MyEnum{Montag=-2, Dienstag, Mittwoch, Donnerstag, Freitag=-4};liefert Methode B) aufgrund der angegebenen Bedingung nichts mehr zurück. A) und C) sind da ein klein wenig resistenter und erzeugen folgenden sinnfreien Output: "Mittwoch, Donnerstag, Freitag, Montag, Dienstag"
Ok, noch ein Schritt weiter: enum MyEnum{Montag=0, Dienstag=-1, Mittwoch=4, Donnerstag=-2, Freitag};
Methode B) liefert auch hier nichts zurück.Methode A) ergibt "Montag, Mittwoch, Donnerstag, Dienstag, Dienstag"Aber wo ist der Freitag?? Hier trennt sich die Spreu vom Weizen.Lediglich Methode C) war so fair und hat sich den Freitag nicht einbehalten: -->"Montag, Mittwoch, Donnerstag, Dienstag, Freitag", die Reihenfolge ist dennoch nicht erwünscht.
Ein letzter Versuch, am Freitag kommt noch eine 1 ran:enum MyEnum{Montag=0, Dienstag=-1, Mittwoch=4, Donnerstag=-2, Freitag=1};Methode B) zeigt nun wenigstens den Wochenstart: "Montag" und schluckt den Rest. A) und C) sind sich auch wieder einig mit "Montag, Freitag, Mittwoch, Donnerstag, Dienstag"
Nun gut, wer es bis hier her geschafft hat, bekommt nun ein Wissenbonus Denn es gibt eine Möglichkeit die richtige Reihenfolge darzustellen. Und zwar mit Hilfe von Reflections, was so aussieht:
Type type =
Ist nicht wirklich lesbarer, aber funktioniert zumindest in allen obigen Fällen korrekt.
that's all folks
Remember Me
a@href@title, strike
Theme design by Jelle Druyts
Pick a theme: BlogXP business calmBlue Candid Blue dasBlog dasblogger dasblueblog dasEmerald DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2
Powered by: newtelligence dasBlog 2.3.9074.18820
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.
© Copyright 2010, Your Name Here
E-mail