資料類型摘要 (Visual Basic)
下表顯示 Visual Basic 資料型別,它們對 Common Language Runtime 型別的支援、它們的表面儲存配置和數值範圍。
Visual Basic 型別 |
Common Language Runtime 型別結構 |
表面儲存配置 |
數值範圍 |
---|---|---|---|
視實作平台而定 |
True 或 False |
||
1 個位元組 |
0 至 255 (不帶正負號) |
||
Char (單一字元) |
2 個位元組 |
0 至 65535 (不帶正負號) |
|
8 個位元組 |
0001 年 1 月 1 日 0:00:00 (午夜) 至 9999 年 12 月 31 日 11:59:59 PM |
||
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 (雙精度浮點數) |
8 個位元組 |
-1.79769313486231570E+308 到 -4.94065645841246544E-324 † (負值), 4.94065645841246544E-324 到 1.79769313486231570E+308 † (正值) |
|
4 個位元組 |
-2,147,483,648 至 2,147,483,647 (帶正負號) |
||
Long (長整數) |
8 個位元組 |
-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 (9.2...E+18 †) (帶正負號) |
|
Object (類別) |
32 位元平台上 4 個位元組 64 位元平台上 8 個位元組 |
可以用 Object 型別之變數加以儲存的任何型別 |
|
1 個位元組 |
-128 至 127 (帶正負號) |
||
Short (短整數) |
2 個位元組 |
-32,768 至 32,767 (帶正負號) |
|
Single (單精確度浮點數) |
4 個位元組 |
-3.4028235E+38 到 -1.401298E-45 † (負值), 1.401298E-45 到 3.4028235E+38 † (正值) |
|
String (可變長度) |
String (類別) |
視實作平台而定 |
0 至大約二十億個 Unicode 字元 |
4 個位元組 |
0 至 4,294,967,295 (不帶正負號) |
||
8 個位元組 |
0 到 18,446,744,073,709,551,615 (1.8...E+19 †) (不帶正負號) |
||
User-Defined (結構) |
(繼承自 ValueType) |
視實作平台而定 |
結構的每個成員都有由其資料型別所決定的範圍,與其他成員的範圍無關 |
2 個位元組 |
0 至 65,535 (不帶正負號) |
† 在「科學標記法」(Scientific Notation) 中,E 代表乘冪 10。 因此 3.56E+ 2 表示 3.56 x 102 或 356,而 3.56E-2 表示 3.56 / 102 或 0.0356。
注意事項 |
---|
針對包含文字的字串,請使用 StrConv 函式來從某一種文字格式轉換為另一種文字格式。 |
使用型別字元,以及指定資料型別之外宣告陳述式,您可以強制一些程式設計項目的資料型別。 請參閱 類型字元 (Visual Basic)。
記憶體消耗量
當您宣告基本資料型別時,假設將它的記憶體消耗量與其表面儲存配置是相同的並不是安全的做法。 基於下列考量:
儲存體指派:Common Language Runtime 會依據執行應用程式所在平台的目前特性來分配儲存區。 如果記憶體幾乎全滿,它就會盡量將宣告元素壓縮在一起。 在其他情況下,它可能會將其記憶體位址對齊自然硬體界限以取得最佳化效能。
平台寬度:64 位元平台與 32 位元平台上的儲存體指派是不同的。
複合資料型別
複合資料型別 (例如結構或陣列) 的每個成員都有相同的記憶體考量。 您不能只將型別成員的表面儲存配置加總。 請注意其他考量,如下所示:
負荷:有些複合型別還有其他的記憶體需求。 例如,陣列本身和每個維度都需要使用額外的記憶體。 在 32 位元平台上,目前的耗用量是 12 個位元組加上每個維度的 8 個位元組。 在 64 位元平台上,需求則加倍。
儲存體佈置:您也不能就將記憶體中的儲存順序視為與您宣告的順序相同。 您甚至無法對位元組對齊做假設,例如 2 位元組或 4 位元組界限。 如果您正在定義類別或結構,且需要控制其成員的儲存體配置,則可將 StructLayoutAttribute 屬性套用至類別或結構。
物件負荷
參考任何基本或複合資料型別的 Object 除了包含在資料型別中的資料之外,還需使用 4 個位元組。