Modificateurs Idempotent en C #

J’ai remarqué que si j’écris quelque chose comme:

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

Le compilateur ne me prévient pas des multiples const . Cela semble donc imiter les modificateurs C, car ils sont idempotents.

Cependant, si j’écris:

 private readonly readonly int a; 

Le compilateur me prévient de la readonly double.

Alors, que se passe-t-il ici? Les modificateurs sont-ils idempotents ou non?


csc version 1.0.0.50618

C’est un bogue dans le compilateur – du moins dans la version 1.0.0.50618 de Roslyn. De la section 8.5.2 de la spécification C # 5:

Une déclaration de constante locale déclare une ou plusieurs constantes locales.

déclaration de constante locale :
Constants constants de type const

déclarants constants :
déclarateur constant
déclarants constants , déclarant constant

constant-declarator : identificateur = expression-constante

Comme vous pouvez le voir, cette grammaire ne permet pas de const const const bool flag = true; .

J’ai déposé un bug contre Roslyn pour qu’il puisse être corrigé.