使用者定義資料型別
更新:2007 年 11 月
保留您定義之格式的資料。Structure 陳述式 (Statement) 會定義格式。
舊版的 Visual Basic 支援使用者定義型別 (UDT)。目前的版本會將 UDT 展開成「結構」。結構是各種資料型別之一個或多個「成員」的串連。Visual Basic 會將結構視為單一單位,但您也能個別存取其成員。
備註
當您需要將各種資料型別結合成單一單位,或是沒有適合所需的基礎資料型別 (Elementary Data Type) 時,請定義和使用結構資料型別。
結構資料型別的預設值,是由其每個成員的預設值組合所組成。
宣告格式
結構宣告是以 Structure 陳述式開始,並以 EndStructure 陳述式結束。Structure 陳述式會提供結構的名稱,這同時也是由結構定義的資料型別識別項。程式碼的其他部分可以使用這個識別項,將變數、參數和函式傳回值宣告為這個結構的資料型別。
Structure 陳述式和 EndStructure 陳述式之間的宣告可定義結構成員。
成員存取層級
您必須使用 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