数据类型摘要 (Visual Basic)

下表显示了 Visual Basic 数据类型、其支持的公共语言运行时类型、其名义存储分配及其值范围。

Visual Basic 类型 公共语言运行时类型结构 名义存储分配 取值范围
布尔值 Boolean 取决于实现平台 TrueFalse
Byte Byte 1 个字节 0 到 255(未签名)
Char(单个字符) Char 2 个字节 0 到 65535(未签名)
日期 DateTime 8 个字节 0001 年 1 月 1 日 0:00:00(午夜)至 9999 年 12 月 31 日晚上 11:59:59
十进制 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.79769313486231570E+308 至 -4.94065645841246544E-324

对于正值,4.94065645841246544E-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 Object(类) 32 位平台上的 4 个字节

64 位平台上的 8 个字节
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(可变长度) String(类) 取决于实现平台 0 到大约 20 亿个 Unicode 字符
UInteger UInt32 4 个字节 0 到 4,294,967,295(未签名)
ULong UInt64 8 个字节 0 到 18,446,744,073,709,551,615 (1.8...E+19 )(未签名)
User-Defined(结构) (继承自 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 函数从一种文本格式转换为另一种文本格式。

除了在声明语句中指定数据类型外,还可以使用类型字符来强制对某些编程元素使用数据类型。 请参阅类型字符

内存消耗

声明基本数据类型时,假设其内存消耗与其名义存储分配相同并不安全。 这有以下注意事项:

  • 存储分配。 公共语言运行时可以基于执行应用程序的平台的当前特征分配存储。 如果内存几乎已满,则可能将声明的元素尽可能紧密地打包在一起。 在其他情况下,可能会将其内存地址与自然硬件边界对齐,以优化性能。

  • 平台宽度。 64 位平台上的存储分配不同于 32 位平台上的分配。

复合数据类型

复合数据类型的每个成员(如结构或数组)都有相同的注意事项。 不能仅依赖将类型成员的名义存储分配相加。 此外,还有其他注意事项,例如:

  • 开销。 某些复合类型具有其他内存要求。 例如,数组对数组本身以及每个维度使用额外的内存。 在 32 位平台上,此开销当前是 12 个字节加上每个维度的 8 个字节。 在 64 位平台上,此要求加倍。

  • 存储布局。 不能安全地假设内存中的存储顺序与声明顺序相同。 甚至不能对字节对齐做出假设,例如 2 字节或 4 字节边界。 如果要定义类或结构,并且需要控制其成员的存储布局,这可以将 StructLayoutAttribute 属性应用于类或结构。

对象开销

除了数据类型中包含的数据之外,引用任何基本或复合数据类型的 Object 还使用 4 个字节。

另请参阅