Ключевые слова языка (C++/CLI)
По сравнению с управляемыми расширениями для C++ в Visual C++ изменились некоторые ключевые слова языка.
В новом синтаксисе Visual C++ из всех ключевых слов удален двойной знак подчеркивания, который использовался в качестве префикса (единственное исключение — ключевое слово __identifier). Например, для объявления свойства теперь используется ключевое слово property, а не __property.
В управляемых расширениях двойной знак подчеркивания использовался в качестве префикса по двум основным причинам:
Этот способ определения локальных расширений совместим со стандартом ISO-C++. Основным предназначением управляемых расширений является обеспечение совместимости со стандартным языком без использования новых ключевых слов и маркеров. Именно это послужило основной причиной для выбора синтаксиса указателей, который используется для объявления объектов управляемых ссылочных типов.
Применение двойного знака подчеркивания также гарантирует выделение ключевых слов в существующей базе кода пользователей языка. Это вторая основная задача, реализуемая при разработке управляемых расширений.
Корпорация Майкрософт заявляет, что в результате удаления двойных знаков подчеркивания по-прежнему обеспечивается совместимость с указанными стандартами. Однако благодаря применению динамической объектной модели CLR реализуется новая эффективная концепция программирования. Для поддержки новой концепции требуется использование новых ключевых слов и маркеров высокого уровня. Для этого требовалась разработка эффективной реализации новой концепции, в которой бы обеспечивалась интеграция со стандартным языком и его поддержка. Новая структура синтаксиса обеспечивает высокоуровневую интеграцию двух разнородных объектных моделей.
Также большое внимание уделено выделению новых ключевых слов в существующем синтаксисе. Для этого используются контекстные и составные ключевые слова. Перед изучением нового синтаксиса языка следует подробнее ознакомиться с этими разновидностями ключевых слов.
Контекстные ключевые слова обладают различными значениями в различных контекстах программы. Например, ключевое слово sealed в общем контексте программы рассматривается как обычный идентификатор. Однако в разделе объявления типа управляемого ссылочного класса оно обрабатывается как ключевое слово в контексте объявления этого класса. Это позволяет свести к минимуму вероятность неоднозначного толкования новых ключевых слов в языке, что крайне важно для пользователей, использующих существующую базу кода. Вместе с тем, такой подход позволяет использовать новые эффективные возможности программирования и функции языка, недоступные в управляемых расширениях. Пример использования ключевого слова sealed см. в разделе Объявление управляемых типов классов.
Составные ключевые слова, например value class, представляют собой частный случай контекстных ключевых слов. В них существующее ключевое слово дополняется контекстным модификатором, который отделяется пробелом. Такая пара слов обрабатывается как единое целое, а не два отдельных ключевых слова.