Какие символы разрешены в имени classа C #?

Какие символы разрешены и что запрещено в имени classа C #? Не могли бы вы помочь?

EDIT: указать. Какие специальные символы разрешены? Пожалуйста, будьте конкретны, потому что ссылки на спецификации на 50 страниц на высокотехнологичном языке – это не ответ, который мне очень поможет.

ОБЪЯСНЕНИЕ: То, что я пытаюсь выполнить, состоит в том, чтобы разделить имя classа на отличимые части, например:

class Person @ WorkOffice @ Helper @ Class

{

}

И я думаю о способе использования какого-то персонажа или чего-то еще, чтобы иметь возможность получить части этого classа, PersonOffice, Helper и Class.

И да, я знаю, что это безумие, но мне это нужно. Я знаю, что я могу использовать атрибуты и reflection для хранения этих данных в метатете classа, но это не так, поэтому, пожалуйста, не предлагайте это решение.

Детали спецификации здесь . По существу, любой символ Юникода (включая escape-коды unicode) в classах символов Lu , Ll , Lt , Lm , Lo , Nl , Mn , Mc , Nd , Pc и Cf. Первый символ является исключением и должен быть буквой (classы Lu , Ll , Lt , Lm или Lo ) или подчеркиванием. Кроме того, если идентификатор является ключевым словом, вы должны придерживаться @ перед ним. Опция @ необязательна.

Действительные идентификаторы в C # определены в Спецификации языка C # , пункт 9.4.2. Правила очень просты:

  • Идентификатор должен начинаться с буквы или символа подчеркивания
  • После первого символа он может содержать числа, буквы, коннекторы и т. Д.
  • Если идентификатор является ключевым словом, он должен быть добавлен с помощью “@”

источник

Категории Юникода можно найти здесь: http://www.dpawson.co.uk/xsl/rev2/UnicodeCategories.html

И оттуда вы можете выбрать большинство вещей из групп (из спекуляций , которые другие указали правильно):

Lu, Ll, Lt, Lm, Lo, Nl, Mn, Mc, Nd, Pc, Cf

Имейте в виду, однако, что Visual Studio (или это Resharper) не обязательно будет любить их всех, но большинство из них компилируется. Возьмем, к примеру, персонаж 30FB KATAKANA MIDDLE DOT. Он компилируется отлично, но он не играет хорошо с IDE. Но эта странная вещь FE34 PRESENTATION FORM FOR VERTICAL WAVY LOW LINE отлично работает.

Вот как работает seperator:

 class Person〱WorkOffice〱Helper〱Class { } 

Я не говорю, что я рекомендую использовать странные символы. Но для особых случаев, как это кажется 🙂

EDIT: обратите внимание, что в спецификации указано, что он позволяет символам из Unicode 3.0 . Я упустил это и задался вопросом, почему многие персонажи не будут работать, хотя они были из правильных групп. Проверьте этот вопрос .

Обратите внимание, что, как указывает thecoop, термин «символ» в контексте Unicode намного шире, чем просто алфавитные буквы.

В основном многие символы Unicode могут быть корректно использованы в идентификаторах, даже если они могут быть немного сложны для ввода в Windows.

В качестве примера:

  • Удерживайте клавишу ALT
  • Введите «0394» на клавиатуре
  • Релиз ALT

Будет добавлен греческий верхний регистр Delta к вашему коду … это допустимое письмо с идентификатором до C #.

Обратите внимание, однако, что соответствие CLS выходит из windows … но по звукам вы можете не слишком беспокоиться об этом.

Давайте будем гением компьютера.