次のように書くと、
static void Main(string[] args)
{
const const const bool flag = true;
}
コンパイラは複数のconst
s について警告しません。これは、べき等性を持つ C 修飾子を模倣しているようです。
しかし、次のように書くと:
private readonly readonly int a;
コンパイラする重複した について警告しますreadonly
。
それで、ここで何が起こっているのでしょうか? 修飾子はべき等性があるのでしょうか?
csc バージョン 1.0.0.50618
ベストアンサー1
これはコンパイラのバグです - 少なくとも Roslyn バージョン 1.0.0.50618 ではそうです。C# 5 仕様のセクション 8.5.2 から引用:
あローカル定数宣言1 つ以上のローカル定数を宣言します。
ローカル定数宣言:
const
タイプ 定数宣言子定数宣言子:
定数宣言子
定数宣言子,
定数宣言子定数宣言子: 識別子
=
定数式
ご覧のとおり、この文法では が許可されませんconst const const bool flag = true;
。
私はロズリンに対するバグ修正できるようにします。