В С# идентификаторы, такие как int
или string
, на самом деле являются ключевыми словами на уровне языка.
В чем причина этого?
Обратите внимание, что если авторы хотели запретить типы пользователей с этими именами, это могло бы сделать семантическую ошибку, а не синтаксическую ошибку.
Некоторые пояснения, основанные на ответах:
-
Они являются ключевыми словами, потому что это делает синтаксический анализ возможным/проще Я не понимаю, почему, поскольку я разрабатываю парсер, а
Type.Rule = Identifier
намного проще, чемType.Rule = Identifier | "int" | "string" | ...
. -
Это ключевые слова, потому что они являются особыми псевдонимами
var
иdynamic
также являются особыми вещами, но не ключевыми словами (по соображениям совместимости, тем не менее, он демонстрирует, что быть ключевым словом необязательно быть специальным). В другом примере, применяя[Serializable]
к типу, создается модификатор метаданных магии ILserializable
вместо стандартного настраиваемого атрибута. Но это еще не ключевое слово. -
Это ключевые слова, потому что они были ключевыми словами на других языках
Хороший ответ, но тогда, почему они являются ключевыми словами на других языках? Кроме того, можно выделить их синим цветом, если они не являются ключевыми словами, поэтому зачем использовать это на других языках?