Добавлен первый бит на основе комментария:
Это не отвечает на вопрос ... ОП не спрашивает, является ли это
разрешено (очевидно, это так), но так ли это - Томас Левеск
Хорошо, позвольте мне обратиться к нему более напрямую:
неправильно использовать специальные символы, такие как латинские символы в
Исходный код написан на C #? Если это неправильно, почему?
По определению спецификации, оно не является «неправильным» (см. Ниже).
Кроме того, более понятным и универсальным является написание кода на английском языке.
есть и другие причины не использовать специальные символы в источнике C #
код
Поскольку вы сказали "Кроме того", я не собираюсь затрагивать темы разборчивости или "универсальности" (в любом случае это уместно для вопроса StackOverflow). С другой стороны: «есть ли какая-либо другая причина не использовать специальные символы» ... Поскольку я игнорирую первое, что вы упомянули, я должен сказать, что не могу думать о многих. Единственное, о чем я могу думать, это; У нас все еще (удивительно) есть проблемы с некоторыми инструментами, поддерживающими Unicode сегодня (в основном сторонние инструменты), МОЖЕТ быть, что вы используете какой-то дурацкий инструмент, который неправильно обрабатывает Unicode или не соответствует спецификации C # правильно - но я не встречал ни одного. Так что я бы сказал нет. (Имея в виду, что вы специально сказали, что мне не нужно обращаться к темам с разборчивостью или универсальностью).
Из спецификации C # ECMA Страница 70:
Правила для идентификаторов, приведенные в этом подпункте, точно соответствуют правилам, рекомендованным Стандартным приложением Unicode 15, за исключением
это подчеркивание допускается в качестве начального символа (как это традиционно
на языке программирования C), разрешены escape-последовательности Unicode
в идентификаторах, и символ «@» разрешен в качестве префикса для включения
ключевые слова, которые будут использоваться в качестве идентификаторов.
identifier::
available-identifier
@ identifier-or-keyword
available-identifier::
An identifier-or-keyword that is not a keyword
identifier-or-keyword::
identifier-start-character
identifier-part-charactersopt
identifier-start-character::
letter-character
_ (the underscore character U+005F)
identifier-part-characters::
identifier-part-character
identifier-part-characters
identifier-part-character
identifier-part-character::
letter-character
decimal-digit-character
connecting-character
combining-character
formatting-character
letter-character::
A Unicode character of classes Lu, Ll, Lt, Lm, Lo, or Nl
A unicode-escape-sequence representing a character of classes Lu, Ll, Lt, Lm, Lo, or Nl
Важным моментом является то, что спецификация определила как letter-character
.
В частности, включает: A Unicode character of classes Lu, Ll, Lt, Lm, Lo, or Nl
Упомянутый вами символ ( - ссылка на юникод ) относится к категории "Lu" ( Letter, Uppercase ), что конкретно разрешено спецификацией в идентификаторе.