В C# такие идентификаторы, как int
или string
, на самом деле являются ключевыми словами на уровне языка.
В чем причина этого?
Обратите внимание: если бы авторы хотели запретить типы пользователей с такими именами, это могло бы привести к семантической, а не синтаксической ошибке.
Некоторые пояснения, основанные на ответах:
Это ключевые слова, потому что это делает синтаксический анализ возможным/упрощенным
Я не понимаю почему, так как я разрабатываю синтаксический анализатор, и наличиеType.Rule = Identifier
намного проще, чемType.Rule = Identifier | "int" | "string" | ...
.Они являются ключевыми словами, потому что являются специальными псевдонимами
var
иdynamic
также являются особыми вещами, но не ключевыми словами (тем не менее, из соображений совместимости это демонстрирует, что быть ключевым словом не обязательно быть особенным). В другом примере применение[Serializable]
к типу создает магический модификатор метаданных ILserializable
вместо стандартного пользовательского атрибута. Но это еще не ключевое слово.Это ключевые слова, потому что они были ключевыми словами на других языках
Хороший ответ, но тогда почему они являются ключевыми словами на других языках? Кроме того, их, безусловно, можно выделить синим цветом, не будучи ключевыми словами, так зачем привносить это из других языков?
int
по-прежнему 32-битным, когда у всех есть 256-битный процессор с петабайтом оперативной памяти в телефоне? Языку C 34 года, он разработан на 18-битной машине. Он выжил, не зафиксировав размер int. - person Hans Passant   schedule 21.07.2012int
в C# через пятьдесят лет все еще будет 32-битным, аlong
все еще будет 64-битным. Тогда 128-битное значение равноxlong
(очень длинное), 256-битноеvxlong
(очень длинное) ツ - person Michael Buen   schedule 21.07.2012var
иdynamic
являются контекстными ключевыми словами, аstring
иint
являются зарезервированными ключевыми словами. Основное различие между контекстными и зарезервированными ключевыми словами заключается в том, что последние нельзя использовать в качестве идентификаторов. Зарезервированные и контекстные ключевые слова а> - person Paolo Moretti   schedule 21.07.2012