C#中的幂等修饰符

xde*_*000 53 c# csc

我注意到如果我写的东西如下:

static void Main(string[] args)
{
    const const const bool flag = true;
}
Run Code Online (Sandbox Code Playgroud)

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

但是,如果我写:

private readonly readonly int a;
Run Code Online (Sandbox Code Playgroud)

编译器确实警告我重复readonly.

那么这里发生了什么?修饰语是否是幂等的?


csc版本1.0.0.50618

Jon*_*eet 69

这是编译器中的一个错误 - 至少在Roslyn版本1.0.0.50618中.从C#5规范的第8.5.2节:

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

local-constant-declaration:
   const 类型 常量声明符

常量声明符:
  常量声明符
  常量声明符 , 常量声明符

constant-declarator:    标识符 = 常量表达式

如您所见,该语法不允许const const const bool flag = true;.

我已经提交了一个针对Roslyn错误,以便它可以修复.