Подтвердить что ты не робот

Каков самый длинный блок юридического оператора, который вы можете сделать только с ключевыми словами С#?

Я писал код на С#, и я обнаружил, что пишу:

return new MyClass(...

когда я заметил, что оба return и new являются ключевыми словами С#. Поэтому я задавался вопросом, какая самая длинная юридическая последовательность ключевых слов в С#. Все, о чем я мог подумать, это:

internal static override void MyFunc(...

Где internal static override void - все ключевые слова. Можете ли вы представить более длинную последовательность ключевых слов?

Примечание. На самом деле нет никакого вопроса. Я просто надеюсь налить больше удовольствия в огонь: -)

4b9b3361

Ответ 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.