Object Data Type

保留參考物件的位址。 您可以將任何參考型別 (字串、陣列、類別或介面) 指派給 Object 變數。 Object 變數也可以參考任何實值型別的資料 (數值、BooleanCharDate、結構或列舉)。

備註

Object 資料類型可以指向任何資料類型的資料,包括您的應用程式可辨識的任何物件執行個體。 當您在編譯時間不知道變數可能指向哪個資料類型時,請使用 Object

Object 的預設值為 Nothing (Null 參考)。

資料類型

您可以將任何資料類型的變數、常數或運算式指派給 Object 變數。 若要判斷 Object 變數目前參考的資料類型,您可以使用 System.Type 類別的 GetTypeCode 方法。 說明如下例。

Dim myObject As Object
' Suppose myObject has now had something assigned to it.
Dim datTyp As Integer
datTyp = Type.GetTypeCode(myObject.GetType())

Object 資料類型為參考型別。 不過,當變數參考實值型別的資料時,Visual Basic 會將 Object 變數視為實值型別。

儲存體

無論其參考何種資料類型,Object 變數都不包含資料值本身,而是資料值的指標。 其於電腦記憶體中一律使用四個位元組,但這不包含代表變數值的資料儲存空間。 由於使用指標尋找資料的程式碼,包含實值型別的 Object 變數會比明確型別變數的存取速度稍微慢一些。

程式設計提示

  • Interop 考量。 如果您要使用的元件不是針對 .NET Framework 所撰寫 (例如 Automation 或 COM 物件),請記住,其他環境中的指標類型與 Visual Basic Object 類型並不相融。

  • 效能。 使用 Object 型別宣告的變數具有靈活彈性,足以包含對任何物件的參考。 不過,當您在此類變數上叫用方法或屬性時,則一律會導致晚期繫結 (在執行階段)。 若要強制執行早期繫結 (在編譯時間) 與更佳效能,請使用特定類別名稱宣告變數,或將其轉換為特定資料類型。

    當您宣告物件變數時,請嘗試使用特定類別類型,例如 OperatingSystem 而非一般化 Object 類型。 您也應該利用可用的最特定類別,例如 TextBox 而非 Control,以便您存取其屬性和方法。 您通常可以使用 [物件瀏覽器] 中的 [類別] 清單,尋找可用的類別名稱。

  • 擴展。 所有資料類型和所有參考型別都會擴展為 Object 資料類型。 這表示,您可以將任何類型轉換成 Object,而不會發生 System.OverflowException 錯誤。

    不過,如果您在實值型別和 Object 之間進行轉換,Visual Basic 會執行稱為 boxingunboxing 的作業,導致執行速度變慢。

  • 型別字元。 Object 沒有常值型別字元或識別項型別字元。

  • Framework 型別。 在 .NET Framework 中對應的類型為 System.Object 型別。

範例

下列範例說明指向物件執行個體的 Object 變數。

Dim objDb As Object
Dim myCollection As New Collection()
' Suppose myCollection has now been populated.
objDb = myCollection.Item(1)

另請參閱