Глава.1 .Модель.выполнения.кода.в.среде.CLR
А вот еще одно правило CTS: все типы должны быть производными (прямо
или опосредованно) от предопределенного типа
System.Object
(то есть от типа
Object
из пространства имен
System
). Тип
Object
является корнем иерархии типов,
а следовательно, гарантирует, что каждый экземпляр типа обладает минимальным
набором аспектов поведения. А если говорить конкретнее, тип
System.Object
по-
зволяет сделать следующее:
сравнить два экземпляра на равенство;
получить хеш-код экземпляра;
запросить фактический тип экземпляра;
выполнить поверхностное (поразрядное) копирование экземпляра;
получить строковое представление текущего состояния экземпляра.
CLS
Модель COM позволяет объектам, написанным на разных языках, взаимодейство-
вать друг с другом. С другой стороны, среда CLR интегрирует все языки и обеспе-
чивает возможность равноправного использования объектов, написанных на одном
языке, в коде на совершенно другом языке. Такая интеграция стала возможной
благодаря стандартному набору типов CLR, метаданным (самодокументирующей
информацией о типах) и общей исполнительной среде.
Хотя языковая интеграция — совершенно замечательная цель, по правде говоря,
языки программирования очень сильно отличаются друг от друга. Например, не-
которые языки не учитывают регистр символов в именах, другие не поддерживают
целые числа без знака, перегрузку операторов или методы с поддержкой перемен-
ного количества аргументов.
Если вы намереваетесь создавать типы, с которыми можно легко работать
из других языков программирования, вам придется использовать только те воз-
можности вашего языка, которые заведомо доступны во всех остальных языках.
Для упрощения этой задачи компания Microsoft определила спецификацию CLS
(Common Language Speciication); в ней перечислен минимальный набор возмож-
ностей, которые должны поддерживаться компилятором для генерирования типов,
совместимых с другими компонентами, написанными на других CLS-совместимых
языках на базе CLR.
Возможности CLR/CTS выходят далеко за рамки подмножества, определяемого
CLS. Если вас не беспокоит межъязыковая совместимость, вы можете разрабаты-
вать типы с широкой функциональностью, ограничиваемой только возможностями
языка. А если говорить конкретнее, CLS определяет правила, которым должны
соответствовать типы и методы с внешней видимостью, для того чтобы они могли
использоваться в любом CLS-совместимом языке программирования. Обратите
внимание: правила CLS не распространяются на код, доступный только в опре-
53
CLS
деляющей сборке. На рис. 1.6 наглядно представлены концепции, выраженные
в этом абзаце.
CLR/CTS
Fortran
Visual
Basic
C#
CLS
Do'stlaringiz bilan baham: |