sirven - ¿Cuál es el bloque de declaración legal más largo que puede hacer con solo palabras clave C#?
palabras reservadas en java y su significado pdf (6)
Estaba escribiendo un código en C #, y me encontré escribiendo:
return new MyClass(...
cuando noté que tanto la return
como la new
eran palabras clave de C #. Así que me pregunté cuál es la secuencia legal más larga de palabras clave en C #. Todo lo que pude pensar es:
internal static override void MyFunc(...
Donde está internal static override void
son todas las palabras clave. ¿Puedes pensar en una secuencia más larga de palabras clave?
Nota: Realmente no hay ningún punto a la pregunta. Solo espero verter más diversión en el fuego :-)
Aquí hay otro caso que puede ser tan largo como desees:
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) // ...
Con palabras clave contextuales también puedes tener
await await await await await await await // ...
Para 6:
new protected internal unsafe virtual decimal Foo() {...}
Editar para 7:
new protected internal unsafe virtual extern decimal Foo();
Si permitimos brackets y tirantes ...
( editado "Lock", "new object ()", "as" y "string" fueron contribuidos por otros; vea comentarios)
decimal Bar() {
lock (new object() as string) {
if (true) {
checked {
unsafe {
try {
do {
return default(decimal);
unchecked {break;}
continue;
} while (false);
}
catch { throw; }
finally { }
}
}
}
}
}
Puedo hacer trampa
internal protected static volatile StringBuilder @string =
new StringBuilder(int.Parse("12"));
Usando el hecho de que puedo usar una palabra clave u otro término reservado como nombre de variable si lo agregué con una @, aparece en 9 si permite la duplicación de StringBuilder.
Supongo que es infinito:
return null as string as string as string as string as string....
Una variante más con definición de método (encontrada por mi colega):
protected internal override sealed unsafe async void await() { ... }
Hace 8 palabras clave en una fila. Utiliza el hecho de que await
es una palabra clave contextual, por lo que se puede reutilizar para el nombre del método.
internal protected static volatile string foo = "bar";
Eso es 5