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

UptoLike

Ссылочные типы описывают так называемые объектные ссылки
(object references), которые представляют собой адреса объектов.
Значения любого типа хранятся в ячейках (location). В качестве яче-
ек могут выступать локальные и глобальные переменные, параметры ме-
тодов, поля объектов и элементы массивов. Для каждой ячейки известен
тип значений, которые она может содержать.
Особо важным является то обстоятельство, что ячейки не могут со-
держать объекты. Все объекты размещаются в специальной области памя-
ти, называемой кучей (heap). Таким образом, в ячейках могут храниться
только значения типов-значений или объектные ссылки.
1.2.1.1. Встроенные типы-значения
Встроенные типы-значения делятся на две группы: целые типы и ти-
пы с плавающей запятой. Они перечислены в таблицах 1.1 и 1.2, соответ-
ственно. В первом столбце каждой из таблиц приведены имена типов, ис-
пользуемые в текстовом представлении CIL (в программах, компилируе-
мых ассемблером ILASM). Во втором столбце перечислены имена, ис-
пользуемые для тех же самых типов в библиотеке классов .NET. В третьем
столбце находится краткое описание, в котором указывается знаковость и
разрядность типа.
Таблица 1.1. Целые типы
Введение в архитектуру Microsoft .NET Framework
13
материала мы сначала рассмотрим основное подмножество общей систе-
мы типов. Будем называть это подмножество ядром системы типов.
Схема ядра общей системы типов .NET приведена на рис. 1.5. На схе-
ме все типы делятся на две категории: это типы-значения (value types) и
ссылочные типы (reference types). Для того чтобы понять причину такого
разделения, приведем следующую аналогию. В некоторых языках про-
граммирования используются два способа передачи параметров при вызо-
ве функции: передача параметра по значению и передача параметров по
ссылке. Передача параметра по значению (by value) подразумевает копи-
рование значения параметра, а при передаче параметра по ссылке (by ref-
erence) копирования не происходит (вместо этого вызываемая функция
получает адрес параметра). Обобщив эту аналогию, мы получим основное
отличие типов-значений от ссылочных типов, а именно: использование
типов-значений всегда связано с копированием их значений, а работа со
ссылочными типами всегда осуществляется через адреса их значений.
Рис. 1.5. Ядро общей системы типов
Типы-значения представляют собой примитивные типы данных (це-
лые числа и числа с плавающей запятой). Существуют еще пользователь-
ские типы-значения, но мы обсудим их позже.
12
CIL и системное программирование в Microsoft .NET
Типы
Ссылочные типы
Самоописывающие
типы
Встроенные
ссылочные типы
Классы
Массивы
Интерфейсы
Типы-значения
Целые типы
Типы с плавающей
запятой
Тип Имя в .NET Описание
Framework
Class Library
bool System.Boolean булевский (8 бит)
char System.Char символ Unicode (16 бит)
int8 System.SByte целое со знаком (8 бит)
int16 System.Int16 целое со знаком (16 бит)
int32 System.Int32 целое со знаком (32 бит)
int64 System.Int64 целое со знаком (64 бит)
unsigned int8 System.Byte целое без знака (8 бит)
unsigned int16 System.Uint16 целое без знака (16 бит)
unsigned int32 System.Uint32 целое без знака (32 бит)
unsigned int64 System.UInt64 целое без знака (64 бит)
native int System.IntPtr целое со знаком
(разрядность процессора)
native unsigned int System.UIntPtr целое без знака
(разрядность процессора)
12                          CIL и системное программирование в Microsoft .NET   Введение в архитектуру Microsoft .NET Framework                          13


материала мы сначала рассмотрим основное подмножество общей систе-                   Ссылочные типы описывают так называемые объектные ссылки
мы типов. Будем называть это подмножество ядром системы типов.                  (object references), которые представляют собой адреса объектов.
     Схема ядра общей системы типов .NET приведена на рис. 1.5. На схе-              Значения любого типа хранятся в ячейках (location). В качестве яче-
ме все типы делятся на две категории: это типы-значения (value types) и         ек могут выступать локальные и глобальные переменные, параметры ме-
ссылочные типы (reference types). Для того чтобы понять причину такого          тодов, поля объектов и элементы массивов. Для каждой ячейки известен
разделения, приведем следующую аналогию. В некоторых языках про-                тип значений, которые она может содержать.
граммирования используются два способа передачи параметров при вызо-                 Особо важным является то обстоятельство, что ячейки не могут со-
ве функции: передача параметра по значению и передача параметров по             держать объекты. Все объекты размещаются в специальной области памя-
ссылке. Передача параметра по значению (by value) подразумевает копи-           ти, называемой кучей (heap). Таким образом, в ячейках могут храниться
рование значения параметра, а при передаче параметра по ссылке (by ref-         только значения типов-значений или объектные ссылки.
erence) копирования не происходит (вместо этого вызываемая функция
получает адрес параметра). Обобщив эту аналогию, мы получим основное            1.2.1.1. Встроенные типы-значения
отличие типов-значений от ссылочных типов, а именно: использование                   Встроенные типы-значения делятся на две группы: целые типы и ти-
типов-значений всегда связано с копированием их значений, а работа со           пы с плавающей запятой. Они перечислены в таблицах 1.1 и 1.2, соответ-
ссылочными типами всегда осуществляется через адреса их значений.               ственно. В первом столбце каждой из таблиц приведены имена типов, ис-
                                                                                пользуемые в текстовом представлении CIL (в программах, компилируе-
                                  Типы                                          мых ассемблером ILASM). Во втором столбце перечислены имена, ис-
                                                                                пользуемые для тех же самых типов в библиотеке классов .NET. В третьем
                                                                                столбце находится краткое описание, в котором указывается знаковость и
                                                                                разрядность типа.
        Типы-значения                        Ссылочные типы
                                                                                      Таблица 1.1. Целые типы
                                                  Самоописывающие
               Целые типы                                                       Тип                           Имя в .NET          Описание
                                                        типы
                                                                                                              Framework
            Типы с плавающей                              Встроенные                                          Class Library
                 запятой                                ссылочные типы          bool                          System.Boolean      булевский (8 бит)
                                                                                char                          System.Char         символ Unicode (16 бит)
                                                             Классы             int8                          System.SByte        целое со знаком (8 бит)
                                                                                int16                         System.Int16        целое со знаком (16 бит)
                                                                                int32                         System.Int32        целое со знаком (32 бит)
                                                            Массивы
                                                                                int64                         System.Int64        целое со знаком (64 бит)
                                                                                unsigned int8                 System.Byte         целое без знака (8 бит)
                                                     Интерфейсы                 unsigned int16                System.Uint16       целое без знака (16 бит)
                                                                                unsigned int32                System.Uint32       целое без знака (32 бит)
                                                                                unsigned int64                System.UInt64       целое без знака (64 бит)
     Рис. 1.5. Ядро общей системы типов                                         native int                    System.IntPtr       целое со знаком
                                                                                                                                  (разрядность процессора)
     Типы-значения представляют собой примитивные типы данных (це-
лые числа и числа с плавающей запятой). Существуют еще пользователь-            native unsigned int           System.UIntPtr      целое без знака
ские типы-значения, но мы обсудим их позже.                                                                                       (разрядность процессора)