實值類型和參考類型
Visual Basic 資料型別會實作其分類為基礎。 根據特定型別的變數是否儲存自己專屬的資料或資料指標,就能將 Visual Basic 資料型別加以分類。 如果它會儲存自己專屬的資料,則為「實值型別」(Value Type)。如果它會儲存記憶體中別處資料的指標,則為「參考型別」(Reference Type)。
實值型別
若資料型別是在其本身的記憶體配置中存放資料,資料型別就屬於「實值型別」(Value Type)。 實值型別包含下列項目:
所有的數字資料型別
Boolean、Char 和 Date
所有結構 (即使其成員也屬於參考型別的結構)
列舉型別 (Enumeration),因為其基礎型別一定是 SByte、Short、Integer、Long、Byte、UShort、UInteger 或 ULong
每個結構是實值型別,即使它包含參考型別成員。 基於這個理由,值輸入如Char和Integer由實作。NET Framework 的結構。
您可以使用保留的關鍵字 (例如 Decimal) 宣告實值型別。 您也可以使用 New 關鍵字來初始化實值型別。 若型別具有包含參數的建構函式 (Constructor) 則特別適用。 #ctor(Int32, Int32, Int32, Boolean, Byte) 建構函式是這種範例中的一個,它會依據提供的組件建置新的 Decimal 值。
參考型別
「參考型別」(Reference Type) 包含存放在其他記憶體配置中資料的指標。 參考型別包含下列項目:
String
所有陣列 (即使其元素也屬於實值型別的陣列)
類別型別,例如 Form
委派
類別是「參考型別」(Reference Type)。 基於這個原因,像 Object 和 String 這類的參考型別是由 .NET Framework 類別支援。 請注意,每個陣列都是參考型別,即使其成員屬於實值型別亦同。
因為每個參考型別代表著一個基礎。NET Framework 類別,您必須使用New 運算子 (Visual Basic)關鍵字,當您將它初始化。 下列陳述式會進行陣列初始化。
Dim totals() As Single = New Single(8) {}
不是型別的元素
下列程式設計項目不能限定型別,因為您無法指定任何一個型別做為宣告項目的資料型別:
命名空間
模組
事件
屬性和程序
變數、常數和欄位
使用物件資料型別
您可以將參考型別或實值型別指派至 Object 資料型別的變數。 Object 變數存放的永遠是資料的指標,而非資料本身。 但是如果您將實值型別指派給 Object 變數,則此變數看起來就像是存放其本身的資料一般。 如需詳細資訊,請參閱 Object 資料類型。
您可以找出是否Object變數,會藉由傳遞給它做為參考型別或實值型別IsReference中的方法Information類別的Microsoft.VisualBasic命名空間。 如果 Object 變數的內容代表參考型別,則 Information.IsReference 會傳回 True。