12
votes

Une entrée enum C # peut-elle avoir un trait d'union dans le nom

est difficile d'avoir une entrée enum avec un trait d'union, "-", dans le nom, par exemple: xxx pré>

J'ai vu la question sur enums ayant des noms sympathiques mais cela me sauverait un peu de travail si je peux utiliser un trait d'union directement. p>

Mise à jour: La raison pour laquelle je veux utiliser un trait d'union est une utilisation facile d'utiliser une énumération pour des listes de valeurs définies que je n'ai aucun contrôle sur tel que: P>

 rejected
 replaced
 local-bye
 remote-bye


3 commentaires

Si vous essayez de diviser les mots de la valeur Enum, essayez d'utiliser Camelcase


-1 Les langages de programmation ne sont pas au moyen d'une langue humaine et peuvent donc ne pas comprendre toutes les variations que nous sommes capables. Dans n'importe quel langage de programmation, j'ai travaillé avec, je n'ai jamais vu des traits d'union, à l'exception de l'identifiant cité dans TSQL ou PLSQL, ce qui permet principalement à une convention de dénomination de colonnes commodentière conformément à la série de résultats. Camelcase est l'approche extrême des netter.


Dupliqué possible de Mes Enums ont des noms amicaux?


4 Réponses :


22
votes

Non, un trait d'union n'est pas autorisé.

identifiants

Vous pouvez évidemment remplacer le trait d'union avec un soulignement, mais comme @benpearce suggéré, Camelcase serait un meilleur choix, et conforme aux normes de codage C #.


2 commentaires

Je viens de regarder cette page. Je ne sais pas pourquoi ils ne pouvaient pas simplement mettre _ au lieu de PC et une référence à l'UNICODE DOC.


Je ne trouve toujours pas la définition officielle de "Connector Ponctuations"



17
votes

Supposons que vous ayez:

enum E { a = 100 , a-b = 200 };
...

E b = E.a;
int c = (int)(E.a-b);


1 commentaires

Je suivrais avec plaisir les directives, mais la liste des chaînes L'ENUM est nécessaire pour représenter est hors de mon contrôle. L'analyse lexicale peut être difficile à obtenir une demi-douzaine de RFC pour éliminer les mots hyphénagés n'est pas facile non plus.



0
votes

Vous dites "Je suis heureux de suivre les directives, mais la liste des chaînes L'ENUM est nécessaire pour représenter est hors de mon contrôle". Comme il s'agit de la raison pour laquelle vous voulez des traits d'union, je vous suggère de remplacer la méthode Tostring () des Enums dont vous en avez besoin, et appelez ToString () dans votre code où vous devez représenter les noms.


1 commentaires

Possible, mais les attributs ont plus de sens (voir le lien dans la question). ToString primordial () Juste pour obtenir des noms amicaux n'est pas raisonnable.



5
votes

Si quelqu'un doit utiliser des traits d'union, je pense que cette approche peut aider: utilisez le soulignement dans votre déclaration d'énorme, puis remplacez le soulignement avec un trait d'union.

enum myEnum { ok, not_ok, }

var test = myEnum.not_ok;
// let's say this value is coming from database or somewhere else
var someValue = "not-ok"; 

if(test.ToString().Replace("_","-").equals(someValue)) { /* some stuff */ }


1 commentaires

J'ai fait quelque chose comme: statut = sqldatareader.getstring (5) .equals ("NotChecked")? "Non coché": "coché" et oui ça marche (puisque mon énum n'a que deux articles)