C# のべき等修飾子 質問する

C# のべき等修飾子 質問する

次のように書くと、

static void Main(string[] args)
{
    const const const bool flag = true;
}

コンパイラは複数のconsts について警告しません。これは、べき等性を持つ 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;

私はロズリンに対するバグ修正できるようにします。

おすすめ記事