Compartilhar via


Estruturas e outros elementos de programação

Você pode usar as estruturas em conjunto com matrizes, objetos e procedimentos, bem como entre si.As interações usam a mesma sintaxe que esses elementos usam individualmente.

Observação:

Não é possível inicializar qualquer um dos elementos de estrutura em dec estrutura laration.Você pode atribuir valores somente a elementos de uma variável que foi declarada a ser de um tipo de estrutura.

Estruturas e Matrizes

Uma estrutura pode conter uma matriz, bem como um ou mais de seus elementos.O exemplo a seguir ilustra isto:

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

Você acessa os valores de uma matriz em uma estrutura da mesma maneira que você acessa uma propriedade em um objeto.O exemplo a seguir ilustra isto:

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

Você pode também declarar uma matriz de estruturas.O exemplo a seguir ilustra isto:

Dim allSystems(100) As systemInfo

Você segue as mesmas regras para acessar os componentes dessa arquitetura de dados.O exemplo a seguir ilustra isto:

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

Estruturas e Objetos

Uma estrutura pode conter um objeto, bem como um ou mais de seus elementos.O exemplo a seguir ilustra isto:

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

Você deve usar um classe de objeto específica em tal declaração, em vez de Object.

Estruturas e Procedimentos

Você pode passar uma estrutura como um argumento de procedimento.O exemplo a seguir ilustra isto:

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

O exemplo anterior passa a estrutura por referência, o que permite que o procedimento modifique seus elementos de modo que as alterações tenham efeito no código de chamada.Se você deseja proteger uma estrutura contra tal modificação, passe-a por valor.

Você também pode retornar uma estrutura a partir de um procedimento Function.O exemplo a seguir ilustra isto:

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

Estruturas dentro de Estruturas

Estruturas podem conter outras estruturas.O exemplo a seguir ilustra isto:

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"

Você também pode usar essa técnica para encapsular uma estrutura definida em um módulo dentro de uma estrutura definida em um módulo diferente.

Estruturas podem conter outras estruturas a uma profundidade arbitrária.

Consulte também

Tarefas

Solucionando problemas de Tipos de Dados

Como: Declarar uma estrutura

Conceitos

Tipos de dados no Visual Basic

Tipos de dados compostos

Variáveis de Estrutura

Estruturas e Classes

Recomendação de Atualizar: Evite matrizes e seqüências de comprimento fixo em tipos definidos pelo usuário

Referência

Instrução Structure

Outros recursos

Tipos de dados elementar

Implementação de tipos de dados

Estruturas: suas próprias tipos de dados