Comment puis-je utiliser un char spécial en C# enum?
Par exemple:
public enum Unit{
KW,
kV,
V,
Hz,
%V
}
Dans ce cas % est un caractère spécial. Alors, comment puis-je mettre ce char dans un enum?
De courte et de Longue réponse: Vous ne pouvez pas...
Même si vous pouvez (basé sur une possible réponse ci-dessous), c'est vraiment, vraiment mauvaise pratique, car à chaque fois que vous essayez de l'utiliser, ça va compliquer la lisibilité du code.
Même si vous pouvez (basé sur une possible réponse ci-dessous), c'est vraiment, vraiment mauvaise pratique, car à chaque fois que vous essayez de l'utiliser, ça va compliquer la lisibilité du code.
OriginalL'auteur Edumenna | 2010-03-03
Vous devez vous connecter pour publier un commentaire.
Enum membres ne doit pas être utilisé pour l'affichage de l'interface utilisateur fins. Ils doivent être mappés à une chaîne afin d'obtenir de l'affiche. Vous pouvez créer un tableau de chaîne (ou un dictionnaire) que les cartes de chaque membre enum à une chaîne de caractères pour l'interaction de l'utilisateur.
cela dit, pour répondre directement à votre question, vous pouvez utiliserComme Henk points, cela ne fonctionne pas pour\uxxxxV
ont étéxxxx
est le nombre hexadécimal représentant le point de code Unicode pour%
. C'est loin d'être recommandé.%
comme il n'est pas dans Unicode classes Lu, Ll, Lt, Lm, Lo, Nl, Mn, Mc, Nd, Pc, Cf (lettres, chiffres, la connexion et la mise en forme des caractères). Seulement ces personnages sont acceptables pour les identificateurs.Merci de remarquer.
Contenu où le contenu appartient. Mieux associer les cordes avec l'énumération des membres à l'aide d'un attribut, puis en utilisant un tableau de chaînes.
Il n'est pas toujours pratique de le faire. Par exemple, lorsque vous avez
[Flags]
enums, il n'y aura pas une à une relation entre les valeurs de types enum enum membres.vrai, mais généralement drapeau énumérations ne sont pas représentés à l'utilisateur comme des chaînes de caractères.
OriginalL'auteur Mehrdad Afshari
Même si vous pouviez le faire (et il semble que vous ne pouvez pas), il ne serait probablement pas une bonne idée, parce que vous seriez en mélangeant comment l'enum devrait être affiché avec le code de programme pour la manipuler. Une meilleure option serait de définir un attribut (ou utiliser les
DisplayNameAttribute
) et d'annoter vos enum avec des noms comme autres méta-données:J'ai utilisé l'attribut de Description au lieu de cela depuis que j'ai reçu cette erreur lors de l'utilisation de DisplayName: "Attribut" DisplayName " n'est pas valide sur ce type de déclaration. Il est valable uniquement pour la classe, une méthode, une propriété, d'indexation, d'événement déclarations."
OriginalL'auteur Tomas Petricek
Juste pour enregistrer une autre façon de le faire, d'une manière simple, vous pouvez définir votre propre" énumérateur avec des constantes. Dans votre exemple
D'accès, il vient:
UnitEnum.Volt
OriginalL'auteur HLourenco
Cette réponse est liée à la une de @Coppermill je me sens à l'aide de la DescriptionAttribute est plus sémantiquement correct lorsque l'on travaille avec des Enums
Puis, j'ai lu de lui comme tel
.
L'utilisation serait
ReadDescription(ReportStatus.Running)
j'ai aussi une méthode qui vous permet de convertir un Enum dans un KeyValuePair Énumérable pour la liaison à une énumération d'une liste Déroulante.[Flags]
. À ce point-je utiliser les classes statiques et fortes à la place. Voir stackoverflow.com/q/19324419/37055OriginalL'auteur Chris Marisic
Je ne suis pas sûr de savoir pourquoi vous êtes après des caractères spéciaux dans votre enum, mais si vous êtes comme moi et que vous avez besoin d'afficher un meilleur nom que peut-être le type à l'aide de la XmlEnumAttribute valeurs pour un Enum
Consulter mon blog pour plus de détails
http://www.bryanavery.co.uk/post/2010/01/08/How-do-you-retrieving-the-XmlEnumAttribute-values-for-an-Enum.aspx
OriginalL'auteur Coppermill
Désolé, mais je viens de réaliser que je n'ai pas la réponse à la question. Je ne vais pas supprimer ma réponse parce que quelqu'un peut trouver ces extraits de code utile.
Je suis entièrement d'accord avec Tomas Petricek, je ne vais pas répéter sa réponse.
Voici ma solution pour le problème. J'ai été en utilisant ce code pour environ cinq ans. J'ai décidé de créer un attribut personnalisé afin d'utiliser l'attribut DisplayName pour les légendes et ces.
OriginalL'auteur AMissico
Certains peuvent affirmer que les Énumérations sont pour le Code, je suis en désaccord et je l'utilise pour le Code et la fonctionnalité d'Affichage.
Dans votre cas particulier, je voudrais utiliser le mot complet
Afin que je puisse les utiliser dans une liste Déroulante, par exemple (quand j'en ai besoin pour créer un nouvel élément, tout ce que je dois faire est d'ajouter cet élément dans l'Énumération...
J'ai tendance à utiliser l'Espace comme Séparateur, mais j'ai l'habitude d'utiliser le trait de soulignement pour faire des espaces, comme
et la DropDownList élément serait
quand je veux mettre le Type de la liste Déroulante, j'utilise l'analyse
bien sûr, si vous utilisez un Séparateur de
Certaines règles d'avoir de la considération pour mieux écrire le code
Comme un rappel
J'espère que je peux aider quelqu'un.
Vous devriez lire Refactoring Livres!
Vous devriez bin tout refactoring livre qui vous recommande de le faire. Votre code est fragile et difficile à refactoriser parce que changer l'énumération des causes de l'INTERFACE pour la pause - et je doute que vous avez des tests d'intégration, à ce niveau, donc il va probablement aller vivre.
OriginalL'auteur balexandre