Common Intermediate Language и системное программирование в Microsoft.Net. Макаров А.В - 14 стр.

UptoLike

Методы (methods).
Методы представляют собой функции классов. Они бывают ста-
тическими (static method) и объектными (instance method). Вы-
зываемый объектный метод всегда получает ссылку на объект,
для которого он вызывается. Объектные методы делятся на вир-
туальные и невиртуальные.
Свойства (properties).
Свойство представляет собой пару методов, один из которых
возвращает некоторое значение, а другой устанавливает это зна-
чение.
События (events).
События используются для асинхронного внесения изменений
в объект.
Типы-массивы также относятся к самоописывающим типам, то есть
каждый массив представляет собой объект в куче, доступ к которому осу-
ществляется через объектную ссылку. Хотя, строго говоря, типы-массивы
не являются классами, считается, что все они наследуют от библиотечно-
го класса System.Array. Типы-массивы интересны тем, что, в отличие от
классов, определяемых программистом самостоятельно, они формируют-
ся системой автоматически. То есть если мы имеем некоторый тип X, то
тип массива, состоящего из элементов типа X, нам уже объявлять не нуж-
но – об этом позаботится система выполнения.
Рис. 1.6. Особенности представления массивов
Массивы бывают как одномерными (в этом случае они обрабатыва-
ются особенно эффективно благодаря использованию специальных инст-
рукций CIL), так и многомерными. Кроме того, система поддерживает
массивы, нижняя граница которых отлична от нуля.
Введение в архитектуру Microsoft .NET Framework
15
Таблица 1.2. Типы с плавающей запятой
Для встроенных типов-значений определены правила преобразова-
ния значений одного типа в другой тип. Такие преобразования бывают су-
жающие (narrowing) и расширяющие (widening). При сужающих преобра-
зованиях значение с большей разрядностью переводится в значение с
меньшей разрядностью, что может приводить к потере значащих битов.
Расширяющие преобразования никогда не приводят к такой потере.
1.2.1.2. Самоописывающие ссылочные типы
В некоторых объектно-ориентированных языках программирования
(например, в C++) объекты могут храниться как в куче (в динамической
памяти), так и в переменных: глобальных (в статической памяти) и ло-
кальных (на стеке). Поэтому системы типов в таких языках содержат от-
дельные типы для самого объекта и для объектной ссылки (указателя на
объект).
В среде .NET объекты и объектные ссылки хранятся раздельно, а
именно: объекты хранятся в куче, а ссылки – в ячейках. Поэтому общая си-
стема типов спроектирована таким образом, что один и тот же ссылочный
тип может являться как типом объекта, так и типом объектной ссылки.
Каждый объект в куче содержит информацию о своем типе. Поэтому
ссылочные типы, представляющие объекты, называются самоописываю-
щими (self-describing).
Два самоописывающих типа являются встроенными – это
System.Object (или просто object в текстовом представлении CIL) и
System.String (или string). Тип System.Object является общим базовым
классом, от которого непосредственно или транзитивно наследует любой
другой класс. Тип System.String используется для представления строко-
вых данных в формате Unicode.
Основу самоописывающих типов составляют классы. Классы могут
агрегировать значения других типов, а также наследоваться друг от друга
(в .NET поддерживается только одиночное наследование). Классы могут
содержать следующие элементы:
Поля (fields).
Поля являются ячейками, в которых хранятся значения других
типов.
14
CIL и системное программирование в Microsoft .NET
Тип Имя в .NET Описание
Framework
Class Library
float32 System.Single вещественное (32 бит)
float64 System.Double вещественное (64 бит)
Массив ссылочного типа
Массив типа-значения
14                          CIL и системное программирование в Microsoft .NET   Введение в архитектуру Microsoft .NET Framework                       15


      Таблица 1.2. Типы с плавающей запятой                                            • Методы (methods).
                                                                                          Методы представляют собой функции классов. Они бывают ста-
Тип                       Имя в .NET           Описание
                          Framework                                                       тическими (static method) и объектными (instance method). Вы-
                          Class Library                                                   зываемый объектный метод всегда получает ссылку на объект,
float32                   System.Single        вещественное (32 бит)                      для которого он вызывается. Объектные методы делятся на вир-
                                                                                          туальные и невиртуальные.
float64                   System.Double        вещественное (64 бит)
                                                                                       • Свойства (properties).
                                                                                          Свойство представляет собой пару методов, один из которых
     Для встроенных типов-значений определены правила преобразова-                        возвращает некоторое значение, а другой устанавливает это зна-
ния значений одного типа в другой тип. Такие преобразования бывают су-                    чение.
жающие (narrowing) и расширяющие (widening). При сужающих преобра-                     • События (events).
зованиях значение с большей разрядностью переводится в значение с                         События используются для асинхронного внесения изменений
меньшей разрядностью, что может приводить к потере значащих битов.                        в объект.
Расширяющие преобразования никогда не приводят к такой потере.                       Типы-массивы также относятся к самоописывающим типам, то есть
                                                                                каждый массив представляет собой объект в куче, доступ к которому осу-
1.2.1.2. Самоописывающие ссылочные типы                                         ществляется через объектную ссылку. Хотя, строго говоря, типы-массивы
     В некоторых объектно-ориентированных языках программирования               не являются классами, считается, что все они наследуют от библиотечно-
(например, в C++) объекты могут храниться как в куче (в динамической            го класса System.Array. Типы-массивы интересны тем, что, в отличие от
памяти), так и в переменных: глобальных (в статической памяти) и ло-            классов, определяемых программистом самостоятельно, они формируют-
кальных (на стеке). Поэтому системы типов в таких языках содержат от-           ся системой автоматически. То есть если мы имеем некоторый тип X, то
дельные типы для самого объекта и для объектной ссылки (указателя на            тип массива, состоящего из элементов типа X, нам уже объявлять не нуж-
объект).                                                                        но – об этом позаботится система выполнения.
     В среде .NET объекты и объектные ссылки хранятся раздельно, а
именно: объекты хранятся в куче, а ссылки – в ячейках. Поэтому общая си-                                    Массив ссылочного типа
стема типов спроектирована таким образом, что один и тот же ссылочный
тип может являться как типом объекта, так и типом объектной ссылки.
     Каждый объект в куче содержит информацию о своем типе. Поэтому
ссылочные типы, представляющие объекты, называются самоописываю-
щими (self-describing).
     Два самоописывающих типа являются встроенными – это
System.Object (или просто object в текстовом представлении CIL) и
System.String (или string). Тип System.Object является общим базовым                                         Массив типа-значения
классом, от которого непосредственно или транзитивно наследует любой
другой класс. Тип System.String используется для представления строко-
вых данных в формате Unicode.
     Основу самоописывающих типов составляют классы. Классы могут
агрегировать значения других типов, а также наследоваться друг от друга              Рис. 1.6. Особенности представления массивов
(в .NET поддерживается только одиночное наследование). Классы могут
содержать следующие элементы:                                                       Массивы бывают как одномерными (в этом случае они обрабатыва-
         • Поля (fields).                                                       ются особенно эффективно благодаря использованию специальных инст-
           Поля являются ячейками, в которых хранятся значения других           рукций CIL), так и многомерными. Кроме того, система поддерживает
           типов.                                                               массивы, нижняя граница которых отлична от нуля.