Какие символы позволяются в имени класса C#?

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

public static string GetResourceTitle<T>(string key)
{
  ResourceManager rm = new ResourceManager(typeof(T));
  string someString = rm.GetString(key);
  return someString;
}

И вызывать где угодно:

var title=  GetResourceTitle<*YouResourceClass*>(key);

Это полезно, когда вы хотите иметь универсальную функцию для получения любой строки Файл ресурсов.

61
задан mireazma 14 August 2017 в 21:57
поделиться

4 ответа

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

67
ответ дан 24 November 2019 в 17:17
поделиться

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

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

source

24
ответ дан 24 November 2019 в 17:17
поделиться

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

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

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

  • Удерживайте нажатой клавишу ALT
  • Введите «0394» на клавиатуре
  • Выпуск ALT

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

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

3
ответ дан 24 November 2019 в 17:17
поделиться

Категории Unicode можно найти здесь: 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 ПРЕЗЕНТАЦИОННАЯ ФОРМА ДЛЯ ВЕРТИКАЛЬНОЙ ВОЛНЫ НИЗКОЙ ЛИНИИ работает нормально.

Вот разделитель, который отлично работает:

class Person〱WorkOffice〱Helper〱Class
{

}

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

РЕДАКТИРОВАТЬ: Обратите внимание, что в спецификации говорится, что разрешены символы из Unicode 3.0 . Я упустил это из виду и удивился, почему многие персонажи не работают, хотя они были из правильных групп. Подробности смотрите в этом вопросе .

14
ответ дан 24 November 2019 в 17:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: