|Important||This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer|
Data Type Summary
The following table shows the Visual Basic .NET data types, their supporting common language runtime types, their nominal storage allocation, and their value ranges.
|Visual Basic type||Common language runtime type structure||Nominal storage allocation||Value range|
|Boolean||System.Boolean||2 bytes||True or False.|
|Byte||System.Byte||1 byte||0 through 255 (unsigned).|
|Char||System.Char||2 bytes||0 through 65535 (unsigned).|
|Date||System.DateTime||8 bytes||0:00:00 on January 1, 0001 through 11:59:59 PM on December 31, 9999.|
|Decimal||System.Decimal||16 bytes||0 through +/-79,228,162,514,264,337,593,543,950,335 with no decimal point; |
0 through +/-7.9228162514264337593543950335 with 28 places to the right of the decimal; smallest nonzero number is
|System.Double||8 bytes||-1.79769313486231570E+308 through |
-4.94065645841246544E-324 for negative values; 4.94065645841246544E-324 through 1.79769313486231570E+308 for positive values.
|Integer||System.Int32||4 bytes||-2,147,483,648 through 2,147,483,647.|
|System.Int64||8 bytes||-9,223,372,036,854,775,808 through 9,223,372,036,854,775,807.|
|Object||System.Object (class)||4 bytes||Any type can be stored in a variable of type Object.|
|Short||System.Int16||2 bytes||-32,768 through 32,767.|
|System.Single||4 bytes||-3.4028235E+38 through -1.401298E-45 for negative values; 1.401298E-45 through 3.4028235E+38 for positive values.|
|System.String (class)||Depends on implementing platform||0 to approximately 2 billion Unicode characters.|
|User-Defined Type |
|(inherits from System.ValueType)||Depends on implementing platform||Each member of the structure has a range determined by its data type and independent of the ranges of the other members.|
Note For strings containing text, use the StrConv function to convert from one text format to another.
When you declare an elementary data type, it is not safe to assume that its memory consumption is the same as its nominal storage allocation. The common language runtime assigns storage based on the characteristics of the platform on which your application is executing. In some circumstances it packs your declared elements as closely together as possible; in other cases it aligns their memory addresses to natural hardware boundaries. Also, storage assignment is different on a 64-bit platform than it is on a 32-bit platform.
The same considerations apply to each member of a composite data type such as a structure or an array. Furthermore, some composite types have additional memory requirements. For example, an array uses extra memory for the array itself and also for each dimension. On a 32-bit platform, this overhead is currently 12 bytes plus 8 bytes for each dimension. On a 64-bit platform the requirement is doubled. You cannot rely on simply adding together the nominal storage allocations of the components.
An Object referring to any elementary or composite data type uses 4 bytes in addition to the data contained in the data type.
Boolean Data Type | Byte Data Type | Char Data Type | Date Data Type | Decimal Data Type | Double Data Type | Integer Data Type | Long Data Type | Object Data Type | Short Data Type | Single Data Type | String Data Type | User-Defined Data Type | Type Conversion Functions | Efficient Use of Data Types | Int, Fix Functions | StrConv Function