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 以便它可以得到修复。
我注意到如果我这样写:
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-declaratorsconstant-declarators:
constant-declarator
constant-declarators,
constant-declaratorconstant-declarator: identifier
=
constant-expression
如您所见,该语法不允许 const const const bool flag = true;
。
我已经提交了 bug against Roslyn 以便它可以得到修复。