Wie kann ich ein enum mit Zahlen erstellen?

7

Ist es möglich, eine Aufzählung mit nur Zahlen in C # zu machen? In meinem Programm habe ich eine Variable, Gain, die nur auf 1, 2, 4 und 8 gesetzt werden kann. Ich verwende ein propertygrid-Steuerelement, um diesen Wert anzuzeigen und festzulegen. Wenn ich eine solche Enum erstellen würde ...

%Vor%

und ich habe meine Verstärkungsvariable vom Typ GainValues ​​gemacht, dann würde die Drop-Down-Liste im PropertyGrid nur die verfügbaren Werte für die Verstärkungsvariable anzeigen. Das Problem ist, ich möchte die Gain-Werte numerisch und nicht als Wörter lesen. Aber ich kann kein enum so erstellen:

%Vor%

Gibt es einen anderen Weg, dies zu tun? Vielleicht einen benutzerdefinierten Typ erstellen?

    
PICyourBrain 01.06.2010, 18:19
quelle

7 Antworten

15

So funktioniert enums nicht. Mit einer Aufzählung können Sie einen bestimmten Wert benennen, damit Sie in Ihrem Code vernünftiger darauf Bezug nehmen können.

Wenn Sie die Domäne eines gültigen numerischen Werts einschränken möchten, ist enums möglicherweise nicht die richtige Wahl. Alternativ können Sie auch eine Sammlung von gültigen Werten erstellen als Gewinne verwendet werden:

%Vor%

Wenn Sie dies typsicherer machen möchten, könnten Sie sogar einen benutzerdefinierten Typ mit einem privaten Konstruktor erstellen, alle gültigen Werte als statische, öffentliche Instanzen definieren und sie dann auf diese Weise verfügbar machen. Aber Sie müssen weiterhin jedem gültigen Wert einen Namen geben - da in C # Member- / Variablennamen nicht mit einer Zahl beginnen können (obwohl sie sie enthalten können).

Wenn Sie nun wirklich wollen, können Sie den Einträgen in einer GainValues-Enumeration spezifische Werte zuweisen, die Sie tun können:

%Vor%     
LBushkin 01.06.2010, 18:21
quelle
10

Es gab schon eine Menge Antworten darauf, aber ich werde eine andere Lösung anbieten. Wenn Sie möchten, dass Ihr Steuerelement eine tatsächliche Zahl im Gegensatz zu dem englischen Wort für die Nummer in Ihrem Steuerelement anzeigt, können Sie Datenanmerkungen verwenden.

%Vor%

Dies ist überall in Ihrem Programm nützlich, wo Sie einen benutzerfreundlichen Namen anstelle des tatsächlichen Namens eines Mitglieds verwenden möchten.

    
Adrian 09.06.2013 21:01
quelle
5

Wenn ich die ursprüngliche Frage richtig verstanden habe, lautet die Antwort möglicherweise:

Sie können Zahlen im Inspektor in einer Aufzählung anzeigen, indem Sie einfach ein Unterstrichpräfix verwenden, z. B .:

%Vor%

Ich hoffe, das hilft!

    
lifeboatDave 11.11.2012 14:41
quelle
4
%Vor%

sollte funktionieren.

Update: OK, ich glaube ich habe dich da falsch verstanden.

Vielleicht könnten Sie ein KeyValuePair<string, int> verwenden und dann den Namen und den Wert an die Key- bzw. Value-Eigenschaft binden.

    
corvuscorax 01.06.2010 18:21
quelle
0

Leider können Symbole in C # Zahlen enthalten, aber kann nicht mit Zahlen anfangen . Also musst du Wörter benutzen.

Alternativ können Sie auch Gain1, Gain2 usw. verwenden.

Oder Sie könnten ganz auf ein Enum verzichten und Konstanten und interne Verarbeitung verwenden.

    
Randolpho 01.06.2010 18:22
quelle
0

verwenden explizite Wertzuweisung in der enum:

%Vor%

Um diese Werte aufzuzählen, gehen Sie wie folgt vor:

%Vor%

Dann können Sie nach Bedarf in / aus Videos konvertieren:

%Vor%     
Mike Marshall 01.06.2010 18:21
quelle
0

Sie können eine benutzerdefinierte Liste als Datenquelle für Ihre Dropdown-Liste verwenden.

Code dahinter:

%Vor%

Asp-Seite:

%Vor%

Zusätzlich können Sie eine Einstellung für den Standardwert, ...

festlegen

hoffe das hilft

    
Matin Habibi 01.06.2010 20:15
quelle