資料類型摘要 (Visual Basic)

下表顯示 Visual Basic 資料型別、其支援的 Common Language Runtime 型別、其名義儲存體配置,以及其值範圍。

Visual Basic 型別 Common Language Runtime 型別結構 名義儲存體配置 數值範圍
布林值 Boolean 取決於實作平台 TrueFalse
位元組 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 個位元組。

另請參閱