我注意到如果我写的东西:
static void Main(string[] args)
{
const const const bool flag = true;
}
编译器并没有警告我多个const
。所以这似乎模仿C修饰符,因为它们是幂等的。
但是,如果我写:
private readonly readonly int a;
编译器 警告我重复的readonly
。
那么这里发生了什么?修饰语是否是幂等的?
csc version 1.0.0.50618
答案 0 :(得分:69)
这是编译器中的一个错误 - 至少在Roslyn版本1.0.0.50618中。从C#5规范的第8.5.2节开始:
local-constant-declaration 声明一个或多个局部常量。
局部常数声明:
const
类型 常量声明符恒定说明符:
恒定说明符
常量声明符,
常量声明符恒定说明符: 标识符
=
常量表达式
如您所见,该语法不允许使用const const const bool flag = true;
。
我已经提交了bug against Roslyn,以便可以修复。