Quels caractères sont autorisés et ce qui n'est pas autorisé dans un nom de classe C #? S'il te plait peux-tu aider?
EDIT: À préciser. Quels caractères spéciaux sont autorisés? Soyez précis, car les liens vers des spécifications de 50 pages dans un langage hautement technique ne sont pas une réponse qui m'aidera beaucoup.
EXPLICATION: Ce que j'essaie d'accomplir, c'est de diviser le nom de la classe en parties distinctes, par exemple:
classe Person @ WorkOffice @ Helper @ Class
{
}
Et je pense à un moyen d'utiliser une sorte de personnage ou autre pour pouvoir obtenir des pièces Person, WorkOffice, Helper et Class à partir de ce nom de classe.
Et oui, je sais que c'est fou, mais j'en ai besoin de cette façon. Je sais que je peux utiliser des attributs et de la réflexion pour stocker ces données dans la méta de classe mais ce n'est pas le cas, alors ne suggérez pas cette solution.
Les détails des spécifications sont ici . Essentiellement, tout caractère unicode (y compris les échappements unicode) dans les classes de caractèresL , Ll , Lt , - Lm , Lo , Nl , Mn , Mc , Nd =, Pc , et Cf . Le premier caractère est une exception et ce doit être une lettre (classes L , Ll , Lt , Lm , ou Lo ) ou un trait de soulignement. De plus, si l'identifiant est un mot-clé, vous devez coller un @ devant. Le @ est facultatif sinon.
Les identificateurs valides en C # sont définis dans C # Language Specification , item 9.4.2. Les règles sont très simples:
Les catégories Unicode peuvent être trouvées ici: http://www.dpawson.co.uk/xsl/rev2/UnicodeCategories.html
Et à partir de là, vous pouvez choisir la plupart des choses au sein des groupes (à partir de spécifications , que d'autres ont correctement indiqué aussi):
Lu, Ll, Lt, Lm, Lo, Nl, Mn, Mc, Nd, Pc, Cf
Sachez cependant que Visual Studio (ou est-ce Resharper) ne les aimera pas nécessairement tous, mais la plupart d'entre eux compilent. Prenons par exemple le personnage 30FB KATAKANA MIDDLE DOT. Il compile bien, mais il ne joue pas Nice avec l'IDE. Mais ce truc bizarre FE34 PRESENTATION FORM POUR VERTICAL WAVY LOW LINE fonctionne très bien.
Voici un séparateur qui fonctionne bien:
class Person〱WorkOffice〱Helper〱Class
{
}
Je ne dis pas que je recommande d'utiliser des caractères étranges. Mais pour des occasions spéciales comme cela semble être :)
EDIT: Notez que la spécification indique qu'elle autorise les caractères Unicode 3.0 . J'ai ignoré cela et je me suis demandé pourquoi beaucoup de personnages ne fonctionneraient pas, même s'ils appartenaient aux bons groupes. Vérifiez cette question pour plus de détails .
Notez que, comme l'indique la boucle, le terme "caractère" dans le contexte d'Unicode est beaucoup plus large que les seules lettres alphabétiques.
Fondamentalement, beaucoup de symboles Unicode peuvent être valablement utilisés dans les identificateurs, même s'ils peuvent être un peu difficiles à taper dans Windows.
Par exemple:
Ajoutera un Delta grec en majuscules à votre code ... il s'agit d'une lettre d'identification valide en ce qui concerne C #.
Notez cependant que la conformité CLS passe par la fenêtre ... mais au vu de cela, vous ne serez peut-être pas trop préoccupé par cela de toute façon.
Voici un article qui pourrait vous être utile: Normes de codage C # et conventions de dénomination
En bref, en commun, le premier mot/partie/lettre de l'objet est en minuscule tandis que la classe est en majuscule .
Par exemple:
HtmlHelper htmlHelper;
FtpTransfer ftpTransfer;
UIControl uiControl;