Share via


使用者定義資料類型

以您定義的格式保存資料。 Structure 陳述式會定義格式。

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

備註

當您需要將各種資料類型結合成單一單位時,或當沒有任何基礎資料型別符合您的需求時,請定義和使用結構資料類型。

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

宣告格式

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

StructureEnd Structure 陳述式之間的宣告會定義結構的成員。

成員存取層級

您必須使用 Dim 陳述式 或指定存取層級的陳述式宣告每個成員,例如 PublicFriendPrivate。 如果您使用 Dim 陳述式,存取層級預設為公用。

程式設計提示

  • 記憶體使用量。 如同所有複合資料型別,您無法藉由將其成員的具名儲存體配置加在一起,安全地計算結構的總記憶體使用量。 此外,您無法安全地假設記憶體中的儲存體順序與您的宣告順序相同。 如果您需要控制結構的儲存體配置,可以將 StructLayoutAttribute 屬性套用至 Structure 陳述式。

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

  • 擴展。 沒有任何結構資料類型往來的自動轉換。 您可以使用 Operator 陳述式在結構上定義轉換運算子,而且您可以將每個轉換運算子宣告為 WideningNarrowing

  • 類型字元。 結構資料類型沒有常值型別字元或識別項型別字元。

  • Framework 類型。 .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

另請參閱