【发布时间】:2015-11-13 14:23:36
【问题描述】:
我注意到如果我写这样的东西:
static void Main(string[] args)
{
const const const bool flag = true;
}
编译器不会警告我有多个consts。所以这似乎模仿了 C 修饰符,因为它们是幂等的。
但是,如果我写:
private readonly readonly int a;
编译器会警告我重复的readonly。
那么这里发生了什么?修饰符是幂等的吗?
csc 版本 1.0.0.50618
【问题讨论】:
-
第一行编译是您使用的任何编译器中的一个错误 - 您还没有告诉我们。它不能与 Roslyn 一起编译...
-
@JonSkeet 如果您尝试将其作为字段,它不会编译。它确实在方法
static void Main(string[] args) { const const const bool flag = true; }中编译 -
@JakubLortz:不,在 VS2010 中仍然会产生错误 (
Type expected)。 -
@JakubLortz:啊,谢谢。这就是为什么简短但完整的例子很重要。将根据规范仔细检查它是否无效,但它看起来确实只是一个编译器错误。
-
@SteffenWinkler 不,它仅适用于 C# 版本 6,与 Visual Studio 的版本无关。我本可以用 Notepad/Sublime 编写该代码并以这种方式编译它。