Estructuras y otros elementos de programación
Actualización: noviembre 2007
Se pueden utilizar estructuras conjuntamente con matrices, objetos y procedimientos, así como unos con otros. Las interacciones utilizan la misma sintaxis que utilizan estos elementos de forma individual.
Nota: |
---|
No puede inicializar ninguno de los elementos de la estructura en la declaración de la estructura. Sólo se pueden asignar valores a los elementos de una variable que se ha declarado como del tipo estructura. |
Estructuras y matrices
Una estructura puede contener una matriz como uno o más de sus elementos. Esto se ilustra en el siguiente ejemplo:
Public Structure systemInfo
Public cPU As String
Public memory As Long
Public diskDrives() As String
Public purchaseDate As Date
End Structure
Tiene acceso a los valores de una matriz dentro de una estructura de la misma manera que tiene acceso a una propiedad en un objeto. Esto se ilustra en el siguiente ejemplo:
Dim mySystem As systemInfo
ReDim mySystem.diskDrives(3)
mySystem.diskDrives(0) = "1.44 MB"
También puede declarar una matriz de estructuras. Esto se ilustra en el siguiente ejemplo:
Dim allSystems(100) As systemInfo
Se siguen las mismas reglas para tener acceso a los componentes de esta arquitectura de datos. Esto se ilustra en el siguiente ejemplo:
ReDim allSystems(5).diskDrives(3)
allSystems(5).CPU = "386SX"
allSystems(5).diskDrives(2) = "100M SCSI"
Estructuras y objetos
Una estructura puede contener un objeto como uno o más de sus elementos. Esto se ilustra en el siguiente ejemplo:
Protected Structure userInput
Public userName As String
Public inputForm As System.Windows.Forms.Form
Public userFileNumber As Integer
End Structure
Se puede utilizar una clase de objeto específica en este tipo de declaración, en lugar de Object.
Estructuras y procedimientos
Puede pasar una estructura como un argumento de procedimiento. Esto se ilustra en el siguiente ejemplo:
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
El ejemplo anterior pasa la estructura por referencia, lo que permite al procedimiento modificar sus elementos de tal forma que los cambios se hacen efectivos en el código de llamada. Si desea proteger una estructura frente a una modificación de este tipo, pásela por valor.
También puede devolver una estructura de un procedimiento Function. Esto se ilustra en el siguiente ejemplo:
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
Estructuras dentro de estructuras
Las estructuras pueden contener otras estructuras. Esto se ilustra en el siguiente ejemplo:
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"
También puede utilizar esta técnica para encapsular una estructura definida en un módulo dentro de una estructura definida en un módulo distinto.
Las estructuras pueden contener otras estructuras hasta cualquier nivel.
Vea también
Tareas
Solucionar problemas de tipos de datos
Conceptos
Tipos de datos en Visual Basic