.Net / CLR идентификаторы - PullRequest
2 голосов
/ 19 июля 2011

Мне было интересно, какие символы принимаются в идентификаторах .Net?

Не C # или VB.Net, а CLR.

Причина, по которой я спрашиваю это, я смотрел на то, как были реализованы операторы yield return ( C # Inth Depth ), и увидел, что он компилируется в код вроде:

public int <count>5__1;

Есть ли другие идентифицирующие символы, которые я мог бы использовать? Этот код не будет общедоступным.

Ответы [ 2 ]

2 голосов
/ 19 июля 2011

Это регулируется спецификацией CLS, глава 8.5.1 «Допустимые имена»:

CLS Правило 4: Ассамблеи должны следовать Приложению 7 Технического отчета 15 Стандарт Unicode 3.0, регулирующий набор символов, разрешенных для начать и быть включенным в идентификаторы, доступные в режиме онлайн на http://www.unicode.org/unicode/reports/tr15/tr15-18.html. Идентификаторы должен быть в каноническом формате, определенном формой нормализации Unicode C. Для целей CLS два идентификатора одинаковы, если их строчные сопоставления (как указано в Unicode, независимо от локали, один к одному отображения в нижнем регистре) одинаковы. То есть для двух идентификаторов считаются различными в соответствии с CLS, они должны отличаться более чем на просто их дело. Однако для того, чтобы переопределить унаследованный Определение CLI требует точного кодирования оригинала декларация будет использоваться.

Или, другими словами, он не определяет список верботен символов, он касается только возможности сравнения строк без неожиданностей. Что все, что CLR когда-либо должен делать. Работа компилятора намного сложнее, он должен уметь распознавать токены в программе, работу лексера. Практические реализации лексера устанавливают правила для допустимых символов в идентификаторе. Например, не начинать идентификатор с цифры.

1 голос
/ 19 июля 2011

В спецификации C # указано, какие символы можно использовать.

CLR, однако, позволяет гораздо больше. Вот почему компилятор C # выдает их как таковые.

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