Каков самый длинный блок юридического оператора, который вы можете сделать только с ключевыми словами С#?
Я писал код на С#, и я обнаружил, что пишу:
return new MyClass(...
когда я заметил, что оба return
и new
являются ключевыми словами С#. Поэтому я задавался вопросом, какая самая длинная юридическая последовательность ключевых слов в С#. Все, о чем я мог подумать, это:
internal static override void MyFunc(...
Где internal static override void
- все ключевые слова. Можете ли вы представить более длинную последовательность ключевых слов?
Примечание. На самом деле нет никакого вопроса. Я просто надеюсь налить больше удовольствия в огонь: -)
Ответы
Ответ 1
Для 6:
new protected internal unsafe virtual decimal Foo() {...}
Изменить для 7:
new protected internal unsafe virtual extern decimal Foo();
Если мы допустим скобки и фигурные скобки...
( отредактировано "блокировка", "новый объект()", "как" и "строка" были внесены другими, см. комментарии)
decimal Bar() {
lock (new object() as string) {
if (true) {
checked {
unsafe {
try {
do {
return default(decimal);
unchecked {break;}
continue;
} while (false);
}
catch { throw; }
finally { }
}
}
}
}
}
Ответ 2
Я предполагаю, что это бесконечно:
return null as string as string as string as string as string....
Ответ 3
Вот еще один случай, который может быть до тех пор, пока вы пожелаете:
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) // ...
С контекстными ключевыми словами вы также можете иметь
await await await await await await await // ...
Ответ 4
internal protected static volatile string foo = "bar";
Это 5.
Ответ 5
Еще один вариант с определением метода (найденный моим коллегой):
protected internal override sealed unsafe async void await() { ... }
Делает 8 ключевых слов подряд. Использует тот факт, что await
является контекстуальным ключевым словом, поэтому его можно повторно использовать для имени метода.
Ответ 6
Могу ли я обмануть?
internal protected static volatile StringBuilder @string =
new StringBuilder(int.Parse("12"));
Используя тот факт, что я могу использовать ключевое слово или другой зарезервированный термин в качестве имени переменной, если я добавлю его с помощью @- входит в 9, если вы разрешаете дублирование StringBuilder.