共用方式為


使用者定義資料型別

保留您定義之格式的資料。 Structure 陳述式 (Statement) 會定義格式。

舊版的 Visual Basic 支援使用者定義型別 (UDT)。 目前的版本會將 UDT 展開成「結構」(Structure)。 結構是各種資料型別之一個或多個「成員」(Member) 的串連。 Visual Basic 會將結構視為單一單位,但您也能個別存取其成員。

備註

當您需要將各種資料型別結合成單一單位,或是沒有適合所需的基礎資料型別 (Elementary Data Type) 時,請定義和使用結構資料型別。

結構資料型別的預設值,是由其每個成員的預設值組合所組成。

宣告格式

結構宣告是以 Structure 陳述式開始,並以 End Structure 陳述式結束。 Structure 陳述式會提供結構的名稱,這同時也是由結構定義的資料型別識別項。 程式碼的其他部分可以使用這個識別項,將變數、參數和函式傳回值宣告為這個結構的資料型別。

Structure 陳述式和 End Structure 陳述式之間的宣告可定義結構成員。

成員存取層級

您必須使用 Dim 陳述式 (Visual Basic) 或指定存取層級的陳述式 (例如 Public (Visual Basic)Friend (Visual Basic)Private (Visual Basic)) 來宣告每個成員。 如果您使用 Dim 陳述式,則存取層級會預設為公用 (Public)。

程式設計提示

  • 記憶體消耗量: :和所有複合資料型別一樣,將成員的表面儲存配置加總起來不一定就是結構的總記憶體耗用量。 除此之外,您也不能就將記憶體中的儲存順序視為與您宣告的順序相同。 如果需要控制結構的儲存體配置,可將 StructLayoutAttribute 屬性 (Attribute) 套用到 Structure 陳述式。

  • Interop 考量: :如果您正在使用的元件不是針對 .NET Framework 所撰寫的 (例如 Automation 或 COM 物件),請記住,其他環境中的使用者定義型別會與 Visual Basic 結構型別不相容。

  • 擴展: :不會與任何結構資料型別進行自動轉換。 您可以使用 Operator 陳述式,在結構上定義轉換運算子,也可以將每一個轉換運算子宣告成 Widening 或 Narrowing。

  • 型別字元。 :結構資料型別沒有常值 (Literal) 型別字元或識別項型別字元。

  • 架構型別。 :.NET Framework 中沒有對應的型別。 所有結構都繼承自 .NET Framework 類別 System.ValueType,但沒有個別結構對應於 System.ValueType

範例

下列的開發架構將顯示結構宣告的大綱。

[Public | Protected | Friend | Protected Friend | Private] Structure structname
    {Dim | Public | Friend | Private} member1 As datatype1
    ' ...
    {Dim | Public | Friend | Private} memberN As datatypeN
End Structure

請參閱

參考

資料型別摘要 (Visual Basic)

ValueType

型別轉換函式 (Visual Basic)

轉換摘要 (Visual Basic)

Structure 陳述式

Widening (Visual Basic)

Narrowing (Visual Basic)

StructLayoutAttribute

概念

有效率地使用資料型別 (Visual Basic)

其他資源

結構 (Visual Basic)