共用方式為


結構和其他程式設計項目

更新:2007 年 11 月

結構可與陣列、物件及程序彼此結合使用。這些項目之間互動所使用的語法與其個別使用的語法相同。

注意事項:

您無法在結構宣告中初始化任何結構項目。您只能將值指派給已宣告為結構型別 (Structure Type) 的變數項目。

結構與陣列

結構可包含一個陣列做為其一個或多個元素。下列範例將說明這點。

Public Structure systemInfo
    Public cPU As String
    Public memory As Long
    Public diskDrives() As String
    Public purchaseDate As Date
End Structure 

存取結構中陣列的值,其方式與存取物件屬性的相同。下列範例將說明這點。

Dim mySystem As systemInfo
ReDim mySystem.diskDrives(3)
mySystem.diskDrives(0) = "1.44 MB"

您也可以宣告結構的陣列。下列範例將說明這點。

Dim allSystems(100) As systemInfo

您必須遵守相同的規則 (Rule) 以存取此資料架構的元件。下列範例將說明這點。

ReDim allSystems(5).diskDrives(3)
allSystems(5).CPU = "386SX"
allSystems(5).diskDrives(2) = "100M SCSI"

結構與物件

結構可包含一個物件做為一個或多個元素。下列範例將說明這點。

Protected Structure userInput
    Public userName As String
    Public inputForm As System.Windows.Forms.Form
    Public userFileNumber As Integer
End Structure

在這類的宣告中,您應使用特定的物件類別,而非 Object。

結構與程序

您可以將結構當做程序引數傳遞。下列範例將說明這點。

Public currentCPUName As String = "700MHz Pentium compatible"
Public currentMemorySize As Long = 256
Public Sub fillSystem(ByRef someSystem As systemInfo)
    someSystem.cPU = currentCPUName
    someSystem.memory = currentMemorySize
    someSystem.purchaseDate = Now
End Sub

前述範例將結構以「傳址 (By Reference) 方式」傳遞,讓程序能夠修改其元素,使變更在呼叫程式碼中產生效用。若您不希望結構進行這類修改,則請以傳值 (By Value) 方式傳遞。

您也可以從 Function 程序傳回結構。下列範例將說明這點。

Dim allSystems(100) As systemInfo
Function findByDate(ByVal searchDate As Date) As systemInfo
    Dim i As Integer
    For i = 1 To 100
        If allSystems(i).purchaseDate = searchDate Then Return allSystems(i)
    Next i
   ' Process error: system with desired purchase date not found.
End Function

包含在結構中的結構

結構中還可包含其他結構。下列範例將說明這點。

Public Structure driveInfo
    Public type As String
    Public size As Long
End Structure
Public Structure systemInfo
    Public cPU As String
    Public memory As Long
    Public diskDrives() As driveInfo
    Public purchaseDate As Date
End Structure
Dim allSystems(100) As systemInfo
ReDim allSystems(1).diskDrives(3)
allSystems(1).diskDrives(0).type = "Floppy"

您也可以使用同樣的方法將一模組所定義的結構封裝到另一不同模組所定義的結構之中。

結構可以包含其他結構達任意多層。

請參閱

工作

資料型別疑難排解

HOW TO:宣告結構

概念

Visual Basic 中的資料型別

複合資料型別

結構變數

結構和類別

升級建議:避免使用者定義型別的陣列和固定長度字串

參考

Structure 陳述式

其他資源

基礎資料型別

資料型別實作

結構:您自己的資料型別