Составители:
Рубрика:
Ссылочные типы описывают так называемые объектные ссылки
(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 целое без знака ские типы-значения, но мы обсудим их позже. (разрядность процессора)
Страницы
- « первая
- ‹ предыдущая
- …
- 11
- 12
- 13
- 14
- 15
- …
- следующая ›
- последняя »