在 C# 中,标识符例如int
or string
实际上是语言级别的关键字。
这是什么原因呢?
Note that if the authors wanted to disallow user types with these names, that could have made that a semantic error, not syntax error.
根据答案进行一些澄清:
它们是关键字,因为它使解析成为可能/更容易
我不明白为什么,因为我正在开发一个解析器,并且有Type.Rule = Identifier
比Type.Rule = Identifier | "int" | "string" | ...
.
它们是关键字,因为它们是特殊的别名
var
and dynamic
也是特殊的东西,但不是关键字(出于兼容性原因,尽管如此,它表明作为关键字不一定是特殊的)。在另一个示例中,应用[Serializable]
类型产生神奇的 IL 元数据修饰符serializable
而不是标准的自定义属性。但它仍然不是一个关键字。
它们是关键字,因为它们是其他语言中的关键字
很好的答案,但是,为什么它们是其他语言中的关键字呢?此外,当然可以用蓝色突出显示它们而不需要它们是关键字,那么为什么要从其他语言引入它呢?
据我所知,C# 设计者希望允许使用 C 风格语言中常见的典型类型名称,即string
, int
, 等等。同时,每个类型都必须具有完全限定的类型名称,例如System.String
and System.Int32
。因此,决定为这些常用类型提供别名。
如果我再次找到此声明的来源,我将添加链接。
在其他基于 CLI 的语言中,相同的完全限定类型标识符也是有效的。但是,键入名称,例如int
or string
在此类语言中可能不常见,因此可能会在那里提供其他别名。
使用类型别名的一个可能的优点可能是提高可读性,这就是为什么存在风格警察规则 http://stylecop.soyuz5.com/SA1121.html强制使用别名而不是常规类型名称。关于简洁性的一点也提到了这个线程 http://social.msdn.microsoft.com/Forums/da/csharplanguage/thread/3e412aa4-1ec4-4b96-abd9-5c3d31e59e92关于同一主题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)