Какой самый длинный блок юридических заявлений вы можете сделать, используя только ключевые слова C #? - PullRequest
17 голосов
/ 23 марта 2009

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

return new MyClass(...

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

internal static override void MyFunc(...

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

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

Ответы [ 6 ]

43 голосов
/ 23 марта 2009

Для 6:

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

Редактировать для 7:

new protected internal unsafe virtual extern decimal Foo();

Если мы допустим скобки и скобки ...

( отредактировано"lock", "new object ()", "as" и "string" предоставлены другими; см. Комментарии)

decimal Bar() {
    lock (new object() as string) {
        if (true) {
            checked {
                unsafe {
                    try {
                        do {
                            return default(decimal);
                            unchecked {break;}
                            continue;
                        } while (false);
                    }
                    catch { throw; }
                    finally { }
                }
            }
        }
    }
}
33 голосов
/ 23 марта 2009

Я думаю, это бесконечно:

return null as string as string as string as string as string....
2 голосов
/ 27 марта 2015

Вот еще один случай, который может быть настолько длинным, насколько вы пожелаете:

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 // ...
1 голос
/ 23 марта 2009
internal protected static volatile string foo = "bar";

Это 5.

0 голосов
/ 12 ноября 2015

Еще один вариант с определением метода (найден моим коллегой):

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

Делает 8 ключевых слов подряд. Использует тот факт, что await является контекстным ключевым словом, поэтому его можно использовать повторно для имени метода.

0 голосов
/ 23 марта 2009

Могу ли я обмануть?

internal protected static volatile StringBuilder @string = 
  new StringBuilder(int.Parse("12"));

Использование того факта, что я могу использовать ключевое слово или другой зарезервированный термин в качестве имени переменной, если я добавляю его к @, появляется в 9, если вы разрешаете дублирование StringBuilder.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...