Quel est le plus long bloc de déclaration légale que vous pouvez créer avec uniquement des mots-clés C #?

J’écrivais du code en C # et je me suis retrouvé à écrire:

return new MyClass(... 

quand j’ai remarqué que le return et le new étaient tous les deux des mots clés C #. Je me suis donc demandé quelle était la plus longue séquence juridique de mots-clés en C #. Tout ce à quoi je pouvais penser, c’est:

 internal static override void MyFunc(... 

internal static override void sont tous des mots-clés. Pouvez-vous penser à une plus longue séquence de mots-clés?

Remarque: La question n’a vraiment aucun sens. J’espère juste m’amuser un peu plus sur le feu 🙂

Pour 6 personnes:

 new protected internal unsafe virtual decimal Foo() {...} 

Modifier pour 7:

 new protected internal unsafe virtual extern decimal Foo(); 

Si nous permettons des crochets et des accolades …

( édité le “verrou”, “nouvel object ()”, “en tant que” et “chaîne” ont été consortingbués par d’autres; voir les commentaires)

 decimal Bar() { lock (new object() as ssortingng) { if (true) { checked { unsafe { try { do { return default(decimal); unchecked {break;} continue; } while (false); } catch { throw; } finally { } } } } } } 

Je suppose que c’est infini:

 return null as ssortingng as ssortingng as ssortingng as ssortingng as ssortingng.... 

Voici un autre cas qui peut être aussi long que vous le souhaitez:

 do do do do do do do do do do do do do do do // ... while(x) while(x) while(x) while(x) while(x) // ... 

Avec des mots-clés contextuels, vous pouvez également avoir

 await await await await await await await // ... 
 internal protected static volatile ssortingng foo = "bar"; 

C’est 5.

Une autre variante avec la définition de la méthode (trouvée par mon collègue):

 protected internal override sealed unsafe async void await() { ... } 

Donne 8 mots-clés à la suite. Utilise le fait que await est un mot clé contextuel, ce qui permet de le réutiliser pour le nom de la méthode.

Puis-je sortingcher?

 internal protected static volatile SsortingngBuilder @ssortingng = new SsortingngBuilder(int.Parse("12")); 

Utiliser le fait que je peux utiliser un mot clé ou un autre terme réservé en tant que nom de variable si je le préfixe par un @ – correspond à 9 si vous autorisez la duplication de SsortingngBuilder.