Wie kann ich ein spezielles Zeichen in einer C # enum verwenden?

8

Zum Beispiel:

%Vor%

In diesem Fall ist% ein Sonderzeichen. Also, wie kann ich diesen Char in eine Enum setzen?

    
Edumenna 03.03.2010, 18:41
quelle

7 Antworten

8

Aufzählungselemente sollten nicht für die Anzeige von Benutzeroberflächen verwendet werden. Sie sollten einer Zeichenkette zugeordnet werden, um angezeigt zu werden. Sie können ein Zeichenfolgenarray (oder ein Wörterverzeichnis) erstellen, das jedem Enumerationselement eine Zeichenfolge für die Benutzerinteraktion zuordnet.

Um Ihre Frage direkt zu beantworten, können Sie \uxxxxV verwenden, wo xxxx die hexadezimale Zahl ist, die den Unicode-Codepunkt für % darstellt. Dies ist bei weitem nicht zu empfehlen. Wie Henk darauf hinweist, wird dies nicht für % funktionieren, da es nicht in den Unicode-Klassen Lu, Ll, Lt, Lm, Lo, NL, Mn, Mc, Nd, Pc, Cf (Buchstaben, Ziffern, Verbindungs- und Formatierungszeichen). Nur diese Zeichen sind für Bezeichner zulässig.

    
Mehrdad Afshari 03.03.2010, 18:44
quelle
25

Selbst wenn Sie das tun könnten (und es sieht so aus, als könnten Sie das nicht), wäre es wahrscheinlich keine gute Idee, weil Sie mischen würden, wie das Enum mit dem Programmcode angezeigt werden soll, um es zu manipulieren. Eine bessere Option wäre, ein Attribut zu definieren (oder das vorhandene DisplayNameAttribute zu verwenden) und Ihre Enumeration mit Namen als zusätzliche Metadaten zu versehen:

%Vor%     
Tomas Petricek 03.03.2010 18:47
quelle
1

Diese Antwort bezieht sich auf die von @Coppermill. Ich denke, dass die Verwendung des DescriptionAttribute bei der Arbeit mit Enums semantisch korrekter ist

%Vor%

Dann lese ich davon wie solche

%Vor%

.

%Vor%

Dann wäre die Verwendung ReadDescription(ReportStatus.Running) Ich habe auch eine Methode, die eine Enum in eine KeyValuePair Enumerable umbinden wird, um ein Enum an ein DropDown zu binden.

    
Chris Marisic 03.03.2010 19:18
quelle
0

Ich bin nicht sicher, warum Sie nach Sonderzeichen in Ihrem Enum sind, aber wenn Sie wie ich sind und Sie einen besseren Namen anzeigen müssen als vielleicht mit den XmlEnumAttribute -Werten für eine Enum

eingeben

Schaut euch meinen Blog für weitere Details an

Ссылка

    
Coppermill 03.03.2010 18:46
quelle
0

Tut mir leid, aber ich habe gerade gemerkt, dass ich die Frage nicht beantwortet habe. Ich werde meine Antwort nicht löschen, da jemand diese Code-Snippets möglicherweise hilfreich finden kann.

Ich stimme Tomas Petricek vollkommen zu, deshalb werde ich seine Antwort nicht wiederholen.

Hier ist meine Lösung für das Problem. Ich benutze diesen Code seit ungefähr fünf Jahren. Ich entschied mich, ein benutzerdefiniertes Attribut zu erstellen, um das DisplayName-Attribut für Beschriftungen und ähnliches zu verwenden.

%Vor% %Vor% %Vor% %Vor%     
AMissico 03.03.2010 19:10
quelle
0

Um einfach einen anderen Weg zu finden, können Sie auf einfache Weise "Ihren eigenen" Enumerator mit Konstanten definieren. In Ihrem Beispiel

%Vor%

Um darauf zuzugreifen, einfach: UnitEnum.Volt

    
HLourenco 28.07.2017 10:26
quelle
-3

Einige können angeben, dass Aufzählungen nur für Code sind, ich muss nicht zustimmen und ich verwende Code- und Anzeigefunktionen.

In Ihrem speziellen Fall würde ich das ganze Wort verwenden

%Vor%

So kann ich sie beispielsweise in einem Dropdown-Menü verwenden (wenn ich ein neues Element erstellen muss, muss ich dieses Element nur an die Aufzählung anhängen ...

%Vor%

Ich neige dazu, das Space-Trennzeichen zu verwenden, verwende aber normalerweise Unterstriche, um Leerzeichen zu erstellen, wie

%Vor%

und das DropDownList-Element wäre

%Vor%

Wenn ich den Typ aus DropDown festlegen möchte, verwende ich das Parse

%Vor%

natürlich, wenn Sie Separator

verwenden %Vor%

Einige Regeln in Erwägung ziehen, besseren Code zu schreiben

  • Schreiben Sie immer Typ in ein Enum. Unit sollte UnitType sein
  • Verwenden Sie Titel für Auflistungsobjekte

Zur Erinnerung

  • Sie können ein Enum in einer Bitoperation verwenden, indem Sie das Schlüsselwort [Flags]
  • hinzufügen
  • Sie können den Ganzzahlwert der Enumeration angeben, wenn Sie nicht möchten: 0, 1, 2, 3 ...

Ich hoffe, ich kann jemandem helfen.

    
balexandre 03.03.2010 19:06
quelle

Tags und Links