C#中类/命名空间标识符前后$符号的含义及合法性疑问
带首尾$的C#标识符是什么意思?
嘿,这个问题问得特别到位!你注意到的那些带$首尾的“标识符”,其实根本不是真正的C#代码标识符——它们是模板占位符!
给你拆解一下细节:
- 首先你说的没错,C#官方的标识符规则确实要求名称以字母或下划线开头,不能用
$作为首尾字符,所以你看到的这段带$的代码,并不是最终会运行的有效C#代码。 - 这些
$safeprojectname$、$saferootidentifiername$是Visual Studio(或者其他支持项目模板的IDE)里的替换标记。当你通过模板创建新的代码重构提供者项目时,IDE会自动把这些占位符替换成你创建项目时输入的实际名称:比如你把项目命名为MyAwesomeRefactor,那$safeprojectname$就会被替换成MyAwesomeRefactor,$saferootidentifiername$也会变成对应的合法标识符,最终生成的代码里就完全看不到$了。 - 至于你说这段代码能“正常运行”,其实是IDE已经完成了占位符替换,运行的是替换后的合法C#代码;而Stack Overflow的代码识别工具认为它不合法,是因为它确实只是一段模板片段,不是符合语法的有效C#代码。
内容的提问来源于stack exchange,提问作者Paul Cohen
相关产品推荐
相关产品推荐

