53 votes

Modificateurs idempotents en C#

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

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

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

Cependant, si j'écris :

private readonly readonly int a;

Le compilateur fait me prévenir de la duplication readonly .

Alors, qu'est-ce qui se passe ici ? Les modificateurs sont-ils idempotents ou non ?


csc version 1.0.0.50618

69voto

Jon Skeet Points 692016

C'est un bogue dans le compilateur - au moins dans la version 1.0.0.50618 de Roslyn. Extrait de la section 8.5.2 de la spécification C# 5 :

A déclaration de constantes locales déclare une ou plusieurs constantes locales.

déclaration de constantes locales :
   const type Déclarateurs constants

Déclarateurs constants :
   Déclarateur constant
   Déclarateurs constants , Déclarateur constant

Déclarateur constant :    identifiant = expression constante

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

J'ai déposé une bogue contre Roslyn pour qu'il puisse être réparé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X