C#类名中允许使用哪些字符?

什么字符是允许的,什么是不允许在C#类的名字? 能否请你帮忙?

编辑:指定。 什么特殊字符是允许的? 请具体说明,因为以高科技语言链接到50页规格不是一个能够帮助我很多的答案。

说明:我试图完成的是将课程名称划分为不同的部分,例如:

class Person @ WorkOffice @ Helper @ Class

{

}

而且我想到了一种使用某种angular色或其他方法来从这个类名获得部件Person,WorkOffice,Helper和Class的方法。

是的,我知道这很疯狂,但我需要这样。 我知道我可以使用属性和reflection来将这些数据存储在类元中,但事实并非如此,所以请不要提出这个解决scheme。

规格细节在这里 。 本质上, 字符类 Lu , Ll , Lt , Lm , Lo , Nl , Mn , Mc , Nd , Pc和Cf中的任何unicode字符(包括unicode转义符 ) 第一个字母是一个例外,它必须是一个字母(类Lu , Ll , Lt , Lm或Lo )或下划线。 此外,如果标识符是关键字,则必须在其前面贴上@。 @是可选的,否则。

C#中的有效标识符在C# 语言规范 2.4.2中定义。 规则非常简单:

  • 标识符必须以字母或下划线开头
  • 在第一个字符之后,它可能包含数字,字母,连接符等
  • 如果标识符是一个关键字,则必须添加“@”

资源

Unicode类别可以在这里find: http : //www.dpawson.co.uk/xsl/rev2/UnicodeCategories.html

从那里你可以从组内挑选大部分东西(从规范中 ,其他人也正确地指出):

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

但请注意,Visual Studio(或者它是Resharper)不一定会喜欢它们,但其中大部分都是编译的。 以例如30FB KATAKANA MIDDLE DOT为例。 它编译得很好,但是对IDE来说并不好。 但是,这个奇怪的东西FE34呈现forms为垂直的WAVY低线工作得很好。

这是一个分离器工作正常:

 class Person〱WorkOffice〱Helper〱Class { } 

我不是说我推荐使用奇怪的字符。 但是对于特殊的场合,这似乎是:)

编辑:注意规范说,它允许来自Unicode 3.0的字符。 我忽略了这一点,并想知道为什么很多angular色不能工作,尽pipe他们来自正确的组织。 检查这个问题的细节 。

请注意,正如coop所指出的那样,在Unicode的上下文中,“字符”一词比只有字母的字母要宽很多。

基本上,很多Unicode符号可以在标识符中有效地使用,即使它们在Windows中input有点困难 。

举个例子:

  • 按住ALT键
  • 在键盘上input“0394”
  • 释放ALT

将添加一个希腊的大写三angular洲到您的代码…这是一个有效的标识符字母就C#而言。

不过要注意的是,CLS的依从性已经消失了……但是从它的声音来看,你可能不会太担心。