-
数据类型摘要 (Visual Basic)
下表显示了 Visual Basic 的数据类型及其支持的公共语言运行时类型、名义存储分配和取值范围。
Visual Basic 类型 |
公共语言运行时类型结构 |
名义存储分配 |
取值范围 |
---|---|---|---|
Boolean |
Boolean |
取决于实现平台 |
True 或 False |
Byte |
Byte |
1 个字节 |
0 到 255(无符号) |
Char(单个字符) |
Char |
2 个字节 |
0 到 65535(无符号) |
Date |
DateTime |
8 个字节 |
0001 年 1 月 1 日午夜 0:00:00 到 9999 年 12 月 31 日晚上 11:59:59 |
Decimal |
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 † |
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 (变长) |
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 †)(无符号) |
用户定义的(结构) |
(继承自 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 开销
引用任何基本或复合数据类型的 Object 在除了该数据类型中包含的数据之外还要额外使用 4 个字节。
原文链接:https://docs.microsoft.com/zh-cn/previous-versions/visualstudio/visual-studio-2010/47zceaw7(v=vs.100)