C#中的幂等修饰符

我注意到,如果我写这样的东西:

static void Main(string[] args) { const const const bool flag = true; } 

编译器不会警告我多个const 。 所以这似乎模仿C修饰符,因为它们是幂等的。

但是,如果我写:

 private readonly readonly int a; 

编译器警告我重复readonly

那么这里发生了什么? 修饰符是幂等的还是不?


csc版本1.0.0.50618

这是编译器中的一个bug – 至less在Roslyn版本1.0.0.50618中。 从C#5规范的第8.5.2节:

局部常数声明声明一个或多个局部常量。

本地常量声明
const types 常量声明符

常量声明符
常数声明
常量声明符 , 常量声明符

常量声明 标识符 = 常量expression式

正如你所看到的,那个语法不允许const const const bool flag = true;

我已经提交了一个对Roslyn的错误,以便它可以得到修复。