Wie kann ich ein enum mit den zahlen?
Ist es möglich, einen enum mit nur zahlen in C#? In meinem Programm habe ich eine variable Verstärkung, das kann nur eingestellt werden, 1, 2, 4 und 8. Ich bin mit einem propertygrid-Steuerelement zum anzeigen und setzen Sie diesen Wert. Wenn ich erstellen Sie eine enum so...
private enum GainValues {One, Two, Four, Eight}
gemacht und hab mein gain variable vom Typ GainValues dann die drop-down-Liste im "propertygrid" - würde nur zeigen die verfügbaren Werte für den gain-variable. Das problem ist, ich will die gain Werte zu Lesen zahlenmäßig eine nicht als Wörter. Aber ich kann nicht erstellen Sie eine enum-so:
private enum GainValues {1,2,4,8}
Also gibt es einen anderen Weg, dies zu tun? Vielleicht erstellen Sie einen benutzerdefinierten Typ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist nicht, wie
enums
Arbeit. Eine Aufzählung erlauben Sie dem Namen einen bestimmten Wert, so dass Sie verweisen können, um es in Ihrem code mehr vernünftig.Wenn Sie beschränken wollen, ist die Domäne von gültigen numerischen, Enumerationen, kann nicht die richtige Wahl. Eine alternative ist das anlegen einer Sammlung von gültige Werte, die verwendet werden können, als Gewinne:
Wenn Sie möchten, um diese besser typesafe, Sie könnten sogar erstellen Sie einen benutzerdefinierten Typ mit einem eigenen Konstruktor definieren, der alle gültigen Werte als statische, öffentliche Instanzen, und dann setzen Sie auf diese Weise. Aber du bist immer noch gehen zu müssen, geben jeweils gültigen Wert ein name - da in C# member/Variablen-Namen dürfen nicht mit einer Zahl beginnen (obwohl Sie können Sie enthalten).
Nun, wenn, was Sie wirklich wollen, ist, um spezifische Werte zuweisen, die Einträge in einer GainValues enumeration,, die Sie tun KÖNNEN:
Gab es eine gute Menge an Antworten schon aber ich biete eine andere Lösung an. Wenn Sie möchten, dass Ihre Kontrolle, um eine tatsächliche Anzahl als Gegensatz zu dem englischen Wort für die Zahl in Ihrer Kontrolle, die Sie verwenden können Anmerkungen zu Daten.
Dies ist nützlich, überall in Ihrem Programm, wo Sie wollen, verwenden Sie einen Anzeigenamen im Gegensatz zu einem Mitglied der tatsächlichen Namen.
Wenn Verstand ich die ursprüngliche Frage richtig beantworten kann, dann dies:
Können Sie bekommen zahlen, die in einem enum im Bereich "Informationen", indem Sie einfach mit einem Unterstrich Präfix, - e.g:
Hoffe, dass dies hilft!
funktionieren sollte.
Update: OK, ich denke, dass ich Sie falsch verstanden es.
Vielleicht könnten Sie einen
KeyValuePair<string, int>
binden und anschließend den Namen und den Wert für den Schlüssel und den Wert der Eigenschaft jeweils.The problem is I want the gain values to read numerically an not as words.
Meine interpretation ist die OP will eine begrenzte Liste der gültigen Werte für die Gewinne, anstatt eine benannte enumeration.Leider, werden die Symbole in C# können zahlen enthalten, aber nicht start mit zahlen. So sind Sie gonna haben, Worte zu benutzen.
Alternativ könnten Sie tun, Gain1, Gain2, etc.
Oder könnte man darauf verzichten, eine enum-insgesamt und Konstanten verwenden und die interne Verarbeitung.
explizite Wertzuweisung in der enum:
Dann Durchlaufen diese Werte gehen Sie wie folgt vor:
Dann können Sie die Typumwandlung in/aus int-Werten als notwendig:
Können Sie eine benutzerdefinierte Liste als datasource für Ihre drop-down-Liste.
Code Hinter:
Asp-Seite:
Darüber hinaus können Sie enum für die Einstellung der default-Wert, ...
hoffe, das hilft