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

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

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

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

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

класс Person @WorkOffice @Helper @Class

{

}

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

источник

Ответ 3

Категории Юникода можно найти здесь: 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 работает просто отлично.

Здесь отличный отделитель:

class Person〱WorkOffice〱Helper〱Class
{

}

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

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

Ответ 4

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

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

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

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

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

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

Ответ 5

Вот статья, которая может оказаться вам полезной: Стандарты кодирования С# и соглашения об именах

table

Короче говоря, обычно первое слово/часть/буква объекта пишется строчными буквами, а класс - прописными.

Например:

HtmlHelper htmlHelper; 
FtpTransfer ftpTransfer;
UIControl uiControl;