資料類型摘要 (Visual Basic)
下表顯示 Visual Basic 資料型別、其支援的 Common Language Runtime 型別、其名義儲存體配置,以及其值範圍。
Visual Basic 型別 | Common Language Runtime 型別結構 | 名義儲存體配置 | 數值範圍 |
---|---|---|---|
布林值 | Boolean | 取決於實作平台 | True 或 False |
位元組 | 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 †) (不帶正負號) |
使用者定義 (結構) | (繼承自 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 函式,將一個文字格式轉換成另一個格式。
除了在宣告陳述式中指定資料型別之外,您還可以使用型別字元來強制某些程式設計元素的資料型別。 請參閱型別字元。
記憶體耗用量
宣告基本資料型別時,假設其記憶體耗用量與其名義儲存配置相同並不安全。 這是因為下列考量:
儲存體指派。 Common Language Runtime 可以根據應用程式執行所在平台的目前特性來指派儲存體。 如果記憶體幾乎已滿,它可能會盡可能將您的宣告元素封裝在一起。 在其他情況下,可能會根據自然硬體界限將其記憶體位址對齊,以將效能最佳化。
平台寬度。 64 位元平台上的儲存體指派與 32 位元平台上的指派不同。
複合資料類型
複合資料型別的每個成員 (例如結構或陣列) 適用相同考量。 您無法只依賴將型別成員的名義儲存體配置加在一起。 此外,還有其他考量,例如下列:
額外負荷。 某些複合型別有額外的記憶體需求。 例如,陣列會針對陣列本身也會針對每個維度使用額外的記憶體。 在 32 位元平台上,此額外負荷目前為每個維度 12 個位元組加上 8 個位元組。 在 64 位元平台上,此需求會加倍。
儲存體配置。 您無法安全地假設記憶體中的儲存體順序與您的宣告順序相同。 您甚至無法對相關的位元組對齊方式 (例如 2 位元組或 4 位元組界限) 進行假設。 如果您要定義類別或結構,而且需要控制其成員的儲存體配置,您可以將 StructLayoutAttribute 屬性套用至該類別或結構。
物件額外負荷
參考任何基本或複合資料型別的 Object
除了資料型別中包含的資料之外,還會使用 4 個位元組。