Сводка типов данных (Visual Basic)

в следующей таблице показаны типы данных Visual Basic, поддерживаемые типы среды clr, их номинальное выделение памяти и диапазоны значений.

тип Visual Basic Структура типа среды CLR Номинальное выделение памяти Диапазон значений
Boolean Boolean Зависит от реализации платформы True либо False
Byte Byte 1 байт от 0 до 255 (без знака)
Char (одиночный символ) Char 2 байта от 0 до 65535 (без знака)
Дата DateTime 8 байт 0:00:00 (полночь) 1 января 0001 г. по 11:59:59 – 31 декабря 9999
Десятичное число Decimal 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 (число с плавающей запятой двойной точности) Double 8 байт -1.79769313486231570 e + 308 до-4.94065645841246544 E-324 для отрицательных значений;

4.94065645841246544 e-324 до 1.79769313486231570 E + 308 для положительных значений
Integer Int32 4 байта от-2 147 483 648 до 2 147 483 647 (подписано)
Long (длинное целое) Int64 8 байт от-9223372036854775808 до 9 223 372 036 854 775 807 (от а до 18 ) (подписано)
Объект Object см 4 байта на 32-разрядной платформе

8 байт на 64-разрядной платформе
Любой тип может храниться в переменной типа Object
SByte SByte 1 байт от-128 до 127 (подписано)
Short (короткое целое) Int16 2 байта от-32 768 до 32 767 (подписано)
Single (с плавающей запятой одиночной точности) Single 4 байта -4028235E e + 38 – 1.401298 E-45 для отрицательных значений;

1.401298 e-45 до 4028235E E + 38 для положительных значений
Строка (переменная длина) String см Зависит от реализации платформы от 0 до приблизительно 2 000 000 000 символов Юникода
UInteger UInt32 4 байта от 0 до 4 294 967 295 (без знака)
ULong UInt64 8 байт от 0 до 18446744073709551615 (1.8... E + 19 ) (без знака)
Определяемый пользователем (структура) (наследует от ValueType ) Зависит от реализации платформы Каждый элемент структуры имеет диапазон, определяемый типом данных и не зависящий от диапазонов других элементов.
UShort UInt16 2 байта от 0 до 65 535 (без знака)

В экспоненциальном представлении"E" означает степень числа 10. Итак, 3.56 E+ 2 означает 3,56 x 10 или 356, а 3.56 e-2 — 3,56/102 или 0,0356.

Примечание

Для строк, содержащих текст, используйте StrConv функцию для преобразования одного текстового формата в другой.

Помимо указания типа данных в операторе объявления, можно принудительно задать тип данных некоторых элементов программирования с помощью символа типа. См. раздел символы типа.

Затраты памяти

При объявлении простейшего типа данных нельзя считать, что его потребление памяти совпадает с номинальным выделением хранилища. Это обусловлено следующими соображениями.

  • служба хранилища Сваивать. Среда CLR может назначать хранилище на основе текущих характеристик платформы, в которой выполняются приложения. Если память почти заполнена, она может упаковать объявленные элементы как можно ближе друг к другу. В других случаях адреса памяти могут быть согласованы с естественными аппаратными границами для оптимизации производительности.

  • Ширина платформы. назначение служба хранилища на 64-разрядной платформе отличается от назначения на 32-разрядной платформе.

Составные типы данных

Те же рекомендации применимы к каждому элементу составного типа данных, такому как структура или массив. Вы не можете полагаться на простое сложение номинальных выделений памяти для членов типа. Кроме того, существуют и другие рекомендации, например следующие:

  • За. Некоторые составные типы предъявляют дополнительные требования к памяти. Например, массив использует дополнительную память для самого массива, а также для каждого измерения. На 32-разрядной платформе этот объем накладных расходов в настоящее время составляет 12 байт плюс 8 байт для каждого измерения. На 64-разрядной платформе это требование удваивается.

  • служба хранилища Режим. Нельзя безопасно предположить, что порядок хранения в памяти совпадает с порядком объявления. Вы даже не можете делать предположения относительно выравнивания байтов, например 2-байтовой или 4-байтовой границы. При определении класса или структуры и необходимости управления структурой хранения его элементов можно применить StructLayoutAttribute атрибут к классу или структуре.

Издержки объекта

При Object ссылке на любой простой или составной тип данных в дополнение к данным, содержащимся в типе данных, используется 4 байта.

См. также