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的错误,以便它可以得到修复。