Benutzer mit den meisten Antworten
c# auf const über den Inhalt eines Strings zugreifen

Frage
-
Hallo,
ich arbeite mit einer (nicht von mir erzeugten) Klasse, die sieht so aus:
static class Namen { public struct Vornamen { public const byte Heiko = 0; public const byte Paul = 1; public const byte Ines = 2; public const byte Kevin = 3; public const byte Franka = 4; public const byte Ive = 5; ...
In meiner eigenen Klasse habe ich einen string nameAsString, diese Variable enthält eine der Konstanten der struct Vornamen. Ich möchte nun an den byte-Wert kommen.
Als Lösung kann ich mir vorstellen, dass ich in meiner Klasse eine Liste mit der Kopie aus struct Vornamen anlege, also eine Liste mit Name/Wert-Paaren. Durch diese Liste kann ich dann iterieren. Alternativ und vielleicht performanter ist wahrscheinlich ein switch/case
switch(nameAsString) { case "Heiko": myByte = Namen.Vornamen.Heiko; // bzw. = 0 break; ...
Die Liste der Konstanten ist lang.
Darum möchte ich fragen,
ob jemand eine elegantere Abfrage/Zuweisung weiß?!Grüße! von Frank
- Bearbeitet frank me Donnerstag, 23. Januar 2014 08:58
Antworten
-
Hi Frank,
grundlegend würde ich ja ganz die Finger von der Klasse lassen. ;)
Wenn du sie doch benutzen must bietetn sich Reflections an. Damit kannst du dann den Name und Wert der eigenschaft bekommen. Wenn der Name immer der Schlüßel ist würde sich ein Dictionary zum Speichern anbiete.
MFG
Björn
- Als Antwort markiert frank me Donnerstag, 23. Januar 2014 09:29
Alle Antworten
-
Hi Frank,
grundlegend würde ich ja ganz die Finger von der Klasse lassen. ;)
Wenn du sie doch benutzen must bietetn sich Reflections an. Damit kannst du dann den Name und Wert der eigenschaft bekommen. Wenn der Name immer der Schlüßel ist würde sich ein Dictionary zum Speichern anbiete.
MFG
Björn
- Als Antwort markiert frank me Donnerstag, 23. Januar 2014 09:29
-
Danke Björn!
Aber wo Du es schon mal angesprochen hast...
Ich selbst bin noch recht neu bei C#,
die struct's sind mir neu und suspect.Warum sagst Du ich sollte die Finger von der Klasse lassen?
Hat das mit den struct's zu tun oder weil sie statisch ist?
Was welche Einwände gibt es gegen struct's?Grüße!
-
Hi,
grundlegend geht es mir da um die Datenhaltung und Erweiterbarkeit, kommt ein Name hinzu oder ändert sich musst du sehrwarscheinlich überall in deinem Programm die änderung machen.
Bei Namen würde sich z.B. eine Textdate oder die AppConfig anbieten. Die du dann einließt und damit als Objekt in einer Liste Arbeitest. (Machst du ja jetzt mit Reflections auch). Wenn ein Name hinzukommt brauchst du nochnicht mal das Programm neu zu kompilieren.
Ich weiß jetzt natürlich nicht genau was du mit der Klasse machst, von der Struktur her sieht es für mich jetzt nach einer Enum aus. Wenn du die Namen Zahl zuweisung brauchst solltest du vielleicht eine Enum Verwenden.
MFG
Björn
-
Danke Dir sehr herzlich!