Visual Basic 中有兩種類型:參考型別和實值型別。 參考型別的變數會儲存其數據的參考(物件),而實值型別的變數則直接包含其數據。 使用參考類型時,這兩種變數可以參考相同的物件,因此對其中一個變數進行的作業可能會影響另一個變數所參考的物件。 使用實值型別時,每個變數都有自己的數據複本,而且一個變數上的作業無法影響另一個變數(但參數 上的 ByRef 修飾詞除外)。
實值型別
如果資料類型在自己的記憶體配置中保存資料,那麼該資料類型是實值類型。 實值類型包括下列各項:
所有數值數據類型
Boolean
、Char
和Date
所有結構,即使其成員是參考型別,也一樣
列舉,因為它們的基礎類型一律為
SByte
、Short
、Integer
、Long
、Byte
、UShort
、UInteger
或ULong
每個結構都是實值型別,即使它包含參考型別成員也一樣。 因此,像Char
和Integer
這樣的實值型別是由 .NET Framework 結構所實作。
您可以使用保留關鍵字來宣告實值型別,例如 Decimal
。 您也可以使用 New
關鍵詞來初始化實值型別。 如果類型具有接受參數的建構函式,這特別有用。 其中一個範例是建 Decimal(Int32, Int32, Int32, Boolean, Byte) 構函式,它會從提供的元件建置新的 Decimal
值。
參考型別
參考類型會儲存其數據的參考。 參考型別包括下列類型:
String
即使其元素是實值型別,所有陣列都一樣
類別類型,例如 Form
代表們
類別是 參考型別。 請注意,即使陣列的成員是實值型別,每個數位都是參考型別。
由於每個參考型別都代表基礎 .NET Framework 類別,因此您必須在初始化它時使用 New Operator 關鍵詞。 下列語句會初始化陣列。
Dim totals() As Single = New Single(8) {}
不是類型的元素
下列程式設計元素不符合類型,因為您無法將其中任何專案指定為宣告項目的數據類型:
命名空間
模組
事件
屬性和程序
變數、常數和欄位
使用物件數據類型
您可以將引用類型或實值型別指派給數據類型的 Object
變數。
Object
變數一律會保存數據的參考,絕不會保存數據本身。 不過,如果您將實值類型指派給 Object
變數,它的行為就如同它保存自己的數據一樣。 如需詳細資訊,請參閱 對象數據類型。
您可以藉由將變數傳遞至 Object
命名空間類別IsReference中的 Information 方法,找出Microsoft.VisualBasic變數是做為參考型別或實值型別。
Information.IsReference
True
如果變數的內容代表參考型別,Object
則傳回 。
另請參閱
- 可為空值的實值類型
- 在 Visual Basic 中的 類型轉換
- Structure 陳述式
- 有效率地使用資料類型
- 對象數據類型
- 數據類型