C# 中的幂等修饰符

Idempotent modifiers in 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

这是编译器中的错误 - 至少在 Roslyn 版本 1.0.0.50618 中是这样。来自 C# 5 规范的第 8.5.2 节:

A local-constant-declaration declares one or more local constants.

local-constant-declaration:
   const type constant-declarators

constant-declarators:
  constant-declarator
  constant-declarators , constant-declarator

constant-declarator:   identifier = constant-expression

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

我已经提交了 bug against Roslyn 以便它可以得到修复。