Поделиться через


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

В следующей таблице показаны типы данных Visual Basic, их вспомогательные типы среды cl language runtime, их номинальное выделение хранилища и их диапазоны значений.

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

4.940656564584124654E-324–1.79769313486231570E+308 для положительных значений
Целое число 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 до 4294 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 байта в дополнение к данным, содержащимся в типе данных.

См. также