Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp Language Specification.doc
Скачиваний:
13
Добавлен:
26.09.2019
Размер:
4.75 Mб
Скачать

2.4.2Идентификаторы

Правила для идентификаторов в этом разделе точно соответствуют правилам, рекомендованным в дополнении 31 к стандарту Юникода, за исключением следующего: знак подчеркивания разрешен в качестве начального символа (что традиционно для языка программирования C), escape-последовательности Юникода разрешены в идентификаторах, а символ «@» разрешен в качестве префикса, чтобы можно было использовать ключевые слова в качестве идентификаторов.

идентификатор: доступный_идентификатор @ идентификатор_или_ключевое_слово

доступный_идентификатор: идентификатор_или_ключевое_слово, не являющиеся ключевым_словом

идентификатор_или_ключевое_слово: начальный_символ_идентификатора символы_части_идентификаторанеобязательно

начальный_символ_идентификатора: буква _ (знак подчеркивания, U+005F)

символы_части_идентификатора: символ_части_идентификатора символы_части_идентификатора символ_части_идентификатора

символ_части_идентификатора: буква десятичная_цифра соединитель несамостоятельный_символ символ_управления_форматом

буква: Символ Юникода классов Lu, Ll, Lt, Lm, Lo или Nl управляющая_последовательность_Юникода, представляющая символы классов Lu, Ll, Lt, Lm, Lo или Nl

несамостоятельный_символ: Символ Юникода классов Mn или Mc управляющая_последовательность_Юникода, представляющая символ классов Mn или Mc

десятичная_цифра: Символ Юникода класса Nd управляющая_последовательность_Юникода, представляющая символ класса Nd

символ-соединитель: Символ Юникода класса Pc управляющая_последовательность_Юникода, представляющая символ класса Pc

символ_управления_форматом: символ Юникода класса Cf управляющая_последовательность_Юникода, представляющая символ класса Cf

Дополнительные сведения об упомянутых выше классах символов Юникода см. в документе «Стандарт Юникода, версия 3.0», раздел 4.5.

Примеры допустимых идентификаторов: «identifier1», «_identifier2», «@if».

Идентификатор в соответствующей программе должен быть в каноническом формате, определенном формой нормализации C Юникода, как определено в дополнении 15 к стандарту Юникода. Поведение при обнаружении идентификатора не в форме нормализации C определяется реализацией, однако диагностика при этом не требуется.

Префикс «@» позволяет использовать ключевые слова в качестве идентификаторов, что полезно при взаимодействии с другими языками программирования. Символ «@» фактически не является частью идентификатора, так что этот идентификатор может отображаться в других языках в виде обычного идентификатора, без префикса. Идентификатор с префиксом «@» называется буквальным идентификатором. Использование префикса «@» для идентификаторов, не являющихся ключевыми словами, разрешено, но настоятельно не рекомендуется со стилистической точки зрения.

В примере

class @class { public static void @static(bool @bool) { if (@bool) System.Console.WriteLine("true"); else System.Console.WriteLine("false"); } }

class Class1 { static void M() { cl\u0061ss.st\u0061tic(true); } }

определен класс с именем «class» со статическим методом с именем «static», принимающим параметр с именем «bool». Обратите внимание, что, поскольку управляющие последовательности Юникода не разрешены в ключевых словах, лексема «cl\u0061ss» является идентификатором, причем тем же идентификатором, что и «@class».

Два идентификатора считаются одинаковыми, если они идентичны после применения следующих преобразований в таком порядке:

  • если используется префикс «@», он удаляется;

  • каждая последовательность_управляющих_символов_Юникода преобразуется в соответствующий символ Юникода;

  • все символы_управления_форматом удаляются.

Идентификаторы, содержащие два последовательных символа подчеркивания (U+005F), зарезервированы для использования в реализации. Например, реализация может предоставлять расширенные ключевые слова, начинающиеся с двух символов подчеркивания.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]