在 C# 中,诸如int
or之string
类的标识符实际上是语言级别的关键字。
这是什么原因?
请注意,如果作者想要禁止使用这些名称的用户类型,那可能会导致语义错误,而不是语法错误。
基于答案的一些澄清:
它们是关键字,因为它使解析成为可能/更容易
我不明白为什么,因为我正在开发一个解析器,并且Type.Rule = Identifier
比Type.Rule = Identifier | "int" | "string" | ...
.它们是关键字,因为它们是特殊的别名
var
并且dynamic
也是特殊的东西,但不是关键字(出于兼容性原因,但它表明作为关键字不一定是特殊的)。在另一个示例中,应用于[Serializable]
类型会生成魔术 IL 元数据修饰符serializable
,而不是标准自定义属性。但它仍然不是关键字。它们是关键字,因为它们是其他语言的关键字
很好的答案,但是,为什么它们是其他语言的关键字?此外,当然可以在不作为关键字的情况下用蓝色突出显示它们,那么为什么要从其他语言中引入呢?