구조체를 배열, 개체 및 프로시저와 함께 사용할 수 있습니다. 상호 작용은 이러한 요소가 개별적으로 사용하는 것과 동일한 구문을 사용합니다.
비고
구조체 선언의 구조체 요소는 초기화할 수 없습니다. 구조체 형식으로 선언된 변수의 요소에만 값을 할당할 수 있습니다.
구조체 및 배열
구조체는 배열을 하나 이상의 요소로 포함할 수 있습니다. 다음 예제에서는 이를 보여 줍니다.
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
동일한 규칙을 따라 이 데이터 아키텍처의 구성 요소에 액세스합니다. 다음 예제에서는 이를 보여 줍니다.
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
앞의 예제에서는 호출 코드에서 변경 내용이 적용되도록 프로시저에서 해당 요소를 수정할 수 있도록 구조체를 참조로 전달합니다. 이러한 수정으로부터 구조를 보호하려면 값으로 전달합니다.
프로시저에서 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"
이 기술을 사용하여 다른 모듈에 정의된 구조체 내의 한 모듈에 정의된 구조를 캡슐화할 수도 있습니다.
구조체는 임의의 깊이까지 다른 구조를 포함할 수 있습니다.
참고하십시오
.NET