Сводка типов данных (Visual Basic)
В следующей таблице описаны типы данных Visual Basic, поддерживающие их типы среды CLR, номинально занимаемая память и диапазоны значений.
Тип Visual Basic |
Структура типа в среде CLR |
Номинальная занимаемая память |
Диапазон значений |
---|---|---|---|
Зависит от платформы реализации |
True или False |
||
1 байт |
От 0 до 255 (беззнаковый). |
||
Char (один знак) |
2 байта |
От 0 до 65535 (беззнаковый). |
|
8 байтов |
От 0:00:00 (полночь) 1 января 0001 года до 11:59:59 вечера 31 декабря 9999 года. |
||
16 байта |
От 0 до +/–79 228 162 514 264 337 593 543 950 335 (+/–7,9... E + 28) † без десятичной запятой; от 0 до +/–7,9228162514264337593543950335 с 28 разрядами справа от десятичной запятой; наименьшее ненулевое число — это +/–0,0000000000000000000000000001 (+/–1E–28) † |
||
Double (число двойной точности с плавающей запятой) |
8 байтов |
От –1,79769313486231570E+308 до –4.94065645841246544E–324 † для отрицательных значений; от 4,94065645841246544E–324 до 1,79769313486231570E+308 † для положительных значений |
|
4 байта |
От –2 147 483 648 до 2 147 483 647 (знаковый) |
||
Long (длинное целое число) |
8 байтов |
От –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 (9,2... E+18 †) (знаковый) |
|
Object (класс) |
4 байта на 32-разрядной платформе 8 байт на 64-разрядной платформе |
В переменной типа Object может храниться значение любого типа. |
|
1 байт |
От –128 до 127 (знаковый) |
||
Short (короткое целое число) |
2 байта |
От –32 768 до 32 767 (знаковый) |
|
Single (число одиночной точности с плавающей запятой) |
4 байта |
От –3,4028235E+38 до –1,401298E–45 † для отрицательных значений; от 1,401298E–45 до 3,4028235E+38 † для положительных значений |
|
String (строка переменной длины) |
String (класс) |
Зависит от платформы реализации |
От 0 до приблизительно 2 миллиардов знаков в кодировке Юникод. |
4 байта |
От 0 до 4 294 967 295 (беззнаковый). |
||
8 байтов |
От 0 до 18 446 744 073 709 551 615 (1,8... E+19 †) (знаковый) |
||
Пользовательский тип (структура) |
(наследует от ValueType) |
Зависит от платформы реализации |
Каждый член структуры имеет диапазон, определяемый его типом данных и не зависящий от диапазонов других членов. |
2 байта |
От 0 до 65 535 (беззнаковый) |
† В экспоненциальном представлении чисел "E" ссылается на степень 10. Таким образом, запись "3,56E + 2" равна 3.56 x 102, или 356, а запись "3,56E - 2" равна 3.56 / 102, или 0,0356.
Примечание
Для преобразования строк, содержащих текст, из одного текстового формата в другой, следует использовать функцию StrConv.
Помимо указания типа данных в инструкцию объявления, можно по тип данных некоторых элементов программирования с помощью символа типа. Дополнительные сведения см. в разделе Символы типов (Visual Basic).
Затраты памяти
Нельзя полагать, что при объявлении простого типа данных выделяемая для него память будет соответствовать номинальной памяти, занимаемой этим типом данных. Причиной тому следующие соображения:
Выделение памяти. В среде CLR количество выделяемой памяти зависит от текущих свойств платформы, на которой выполняется приложение. Если память почти заполнена, она может упаковать объявленные элементы вместе максимально плотно. В других случаях она может выравнять их адреса в памяти до по естественной аппаратной границе для повышения производительности.
Разрядность платформы. Выделение памяти на 64-разрядной платформе отличается от выделения памяти на 32-разрядной платформе.
Составные типы данных
Аналогичные рассуждения справедливы для любых членов составных типов данных, таких как структура или массив. Неверно основывать расчет требуемой памяти на простом сложении номинальных объемов памяти, занимаемых членами типа. Кроме того, существуют другие вопросы, например:
Дополнительные издержки. Некоторые составные типы расходуют дополнительный объем памяти. Например, массив занимает дополнительную память для самого массива и для каждого измерения. В настоящее время на 32-разрядной платформе эти дополнительные издержки составляет 12 байтов плюс по 8 байтов для каждого измерения. На 64-разрядной платформе эти требования удваиваются.
Расположение в памяти. Нельзя однозначно полагать, что порядок расположения элементов в памяти соответствует порядку их объявления. Нельзя даже делать какие-либо предположения о порядке выравнивании байтов, таких как 2-байтовая или 4-байтовая границы. Если при определении класса или структуры требуется контролировать расположение членов в памяти, то к классу или структуре можно применить атрибут StructLayoutAttribute.
Служебные данные типа Object
Переменная типа Object, ссылающаяся на любой простой или составной тип данных, использует 4 байта помимо данных, содержащихся в этом типе.
См. также
Ссылки
Функции преобразования типов (Visual Basic)
Сводка по преобразованию (Visual Basic)