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