C#中的幂等修饰符

时间:2015-11-13 14:23:37

标签: c# csc

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

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

1 个答案:

答案 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,以便可以修复。