Сводка типов данных (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,000000000000000000000001 (+/-1E-28)
Double (двойной точности с плавающей запятой) Double 8 байт -1.79769313486231570E+308–-4.94065645841246544E-324 для отрицательных значений;

4.9406564541246544E-324–1.79769313486231570E+308 для положительных значений
Integer Int32 4 байта -2,147,483,648–2,147,483,647 (подписан)
Long (длинное целое число) Int64 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
SByte SByte 1 байт –128–127 (подписан)
Short (короткое целое число) Int16 2 байта От -32 768 до 32 767 (подписан)
Single (одноточие с плавающей запятой) Single 4 байта -3.4028235E+38–-1.401298E-45 для отрицательных значений;

1.401298E-45–3.4028235E+38 для положительных значений
Строка (переменная длина) String (класс) Зависит от реализации платформы От 0 до приблизительно 2 миллиардов символов Юникода
UInteger UInt32 4 байта От 0 до 4 294 967 295 (без знака)
ULong UInt64 8 байт От 0 до 18 446 744 073 709 551 615 (1,8...E+19 ) (без знака)
Определяемые пользователем (структура) (наследует от ValueType) Зависит от реализации платформы Каждый член структуры имеет диапазон, определенный его типом данных, и не зависит от диапазонов других элементов.
UShort UInt16 2 байта От 0 до 65 535 (без знака)

В научной нотации "E" относится к силе 10. Поэтому 3.56E+2 означает 3.56 x 102 или 356, а 3.56E-2 означает 3.56 / 102 или 0,0356.

Примечание

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

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

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

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

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

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

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

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

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

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

Затраты на объекты

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

См. также раздел