¿Qué caracteres están permitidos en el nombre de la clase C #?

¿Qué personajes están permitidos y qué no está permitido en un nombre de clase C #? ¿Podrias ayudarme por favor?

EDITAR: Para especificar. ¿Qué personajes especiales están permitidos? Sea específico, porque los enlaces a especificaciones de 50 páginas en lenguaje técnico no son una respuesta que me ayude mucho.

EXPLICACIÓN: Lo que trato de lograr es dividir el nombre de la clase en partes distinguibles, por ejemplo:

clase Persona @ WorkOffice @ Helper @ Class

{

}

Y pienso en una forma de usar algún tipo de personaje u otra cosa para poder obtener las partes Person, WorkOffice, Helper y Class de este nombre de clase.

Y sí, sé que es una locura, pero lo necesito de esa manera. Sé que puedo usar los atributos y la reflexión para almacenar estos datos en la clase meta, pero este no es el caso, así que no sugiera esta solución.

Los detalles de la especificación están aquí . Básicamente, cualquier carácter Unicode (incluidos los escapes Unicode) en las clases de caracteres Lu , Ll , Lt , Lm , Lo , Nl , Mn , Mc , Nd , Pc y Cf. El primer carácter es una excepción y debe ser una letra (clases Lu , Ll , Lt , Lm o Lo ) o un guión bajo. Además, si el identificador es una palabra clave, debe colocar un @ delante de él. El @ es opcional de lo contrario.

Los identificadores válidos en C # se definen en la Especificación del lenguaje C # , artículo 9.4.2. Las reglas son muy simples:

  • Un identificador debe comenzar con una letra o un guión bajo
  • Después del primer personaje, puede contener números, letras, conectores, etc.
  • Si el identificador es una palabra clave, debe estar precedido por “@”

fuente

Las categorías Unicode se pueden encontrar aquí: http://www.dpawson.co.uk/xsl/rev2/UnicodeCategories.html

Y a partir de ahí puede elegir la mayoría de las cosas dentro de los grupos (de las especificaciones , que otros también han señalado correctamente):

Lu, Ll, Lt, Lm, Lo, Nl, Mn, Mc, Nd, PC, Cf

Tenga en cuenta, sin embargo, que Visual Studio (o es Resharper) no necesariamente les gustará a todos, pero la mayoría comstack. Tomemos por ejemplo el personaje 30FB KATAKANA MIDDLE DOT. Se comstack bien, pero no funciona bien con el IDE. Pero esta extraña FORMA DE PRESENTACIÓN FE34 PARA VERTICAL WAVY LOW LINE funciona bien.

Aquí hay un separador que funciona bien:

 class Person〱WorkOffice〱Helper〱Class { } 

Sin embargo, no estoy diciendo que recomiende usar personajes extraños. Pero para ocasiones especiales ya que esto parece ser 🙂

EDITAR: tenga en cuenta que la especificación dice que permite caracteres de Unicode 3.0 . Pasé por alto eso y me pregunté por qué muchos personajes no funcionarían, aunque pertenecían a los grupos adecuados. Verifique esta pregunta para más detalles .

Tenga en cuenta que, como lo indica thecoop, el término ‘carácter’ en el contexto de Unicode es mucho más amplio que las letras alfabéticas.

Básicamente, muchos símbolos Unicode pueden usarse válidamente en identificadores, incluso si pueden ser un poco difíciles de escribir en Windows.

Como ejemplo:

  • Mantenga presionada la tecla ALT
  • Escriba ‘0394’ en el teclado
  • Liberación ALT

Agregará un Delta mayúsculo griego a su código … esta es una letra de identificador válida en lo que se refiere a C #.

Sin embargo, tenga en cuenta que el cumplimiento de CLS se va por la ventana … pero por lo que parece, puede que no esté demasiado preocupado por eso de todos modos.