Instrução Structure
Declara o nome de uma estrutura e introduz a definição de variáveis, propriedades, eventos e procedimentos que compõem a estrutura.
[ <attributelist> ] [ accessmodifier ] [ Shadows ] [ Partial ] _
Structure name [ ( Of typelist ) ]
[ Implements interfacenames ]
datamemberdeclarations
[ methodmemberdeclarations ]
End Structure
Partes
attributelist
Opcional.Veja Lista de Atributos.accessmodifier
Opcional.Pode ser um dos seguintes:Shadows
Opcional.Acesse Shadows.Partial
Opcional.Indica uma definição parcial da estrutura.SeePartial (Visual Basic).name
Obrigatório.Nome dessa estrutura.SeeNomes de Elementos Declarados.Of
Opcional.Especifica que essa é uma estrutura genérica.typelist
Necessário se você usar a palavra-chave Of.Lista de tipo de parâmetros para essa estrutura.Consulte Type List.Implements
Opcional.Indica que essa estrutura implementa os membros de uma ou mais interfaces.SeeImplementa Declaração.interfacenames
Necessário se você usar a declaração Implements.Os nomes das interfaces que essa estrutura implementa.datamemberdeclarations
Obrigatório.Uma ou mais declarações Const,Dim,Enum,ou Event estão declarando membros de dadosda estrutura.methodmemberdeclarations
Opcional.Zero ou mais declarações de procedimentos Function,Operator,Property,ouSub, que servem como membros de método da estrutura.End Structure
Obrigatório.Finaliza a definição Structure.
Comentários
A declaração Structure define um tipo de valor composto que você pode personalizar.Uma estrutura é uma generalização do tipo definido pelo usuário (TDU) de versões anteriores do Visual Basic.Para obter mais informações, consulte Estruturas: suas próprias tipos de dados.
Estruturas oferecem suportem à muitas ferramentas de classesPor exemplo, estruturas podem ter propriedades e procedimentos, elas podem implementar interfaces, e podem ter construtores parametrizados.Entretanto, existem diferenças substanciais entre estruturas e classes em áreas como herança, declarações e utilização.Além disso, classes são tipos de referência e estrutura são tipos de valor.Para obter mais informações, consulte Estruturas e Classes.
Você pode usar Structure somente em nível de namespace ou módulo.Isso significa que o contexto da declaração para uma estrutura devem ser um arquivo fonte, namespace, classe, estrutura, módulo, ou interface, e não pode ser um procedimento ou bloco.Para obter mais informações, consulte Declaração de contextos e níveis de acesso padrão.
O padrão para estruturas é acesso Amigo (Visual Basic).Você pode ajustar os níveis de acesso com os modificadores de acesso.Para obter mais informações, consulte Níveis de acesso em Visual Basic.
Regras
**Aninhamento.**Você pode definir uma estrutura dentro de outra.A estutura exterior é chamada de estrutura contenedora. e a estrutura interior é chamada de estrutura aninhada.Entretanto, não é possivel acessar um membro de uma estrutura aninhada através da estrutura contenedoraEm vez disso, você deve declarar uma variável do tipo de dado da estrutura aninhada.
**Declaração de Membro.**Você deve declarar cada membro de uma estrutura.Um membro de uma estrutura não pode ser ProtectedouProtected Friend pois nada herda de uma estrutura.A estrutura em si, entretanto, pode ser Protected ou Protected Friend.
Você deve declarar pelo menos uma variável não compartilhada ou um evento não compartilhado e não personalizado em uma estrutura.Você não pode ter apenas constantes, propriedades, e procedimentos, mesmo se alguns deles não forem compartilhados.
**Inicialização.**Você não pode inicializar o valor de qualquer membro de dado não compartilhado de uma estrutura como parte da declaração.Você deve inicializar tal membro de dado através de um construto parametrizado na estrutura, ou atribuir um valor para o membro depois de ter criado uma instância da estrutura.
Herança Uma estrutura não pode herdade de qualquer tipo que não seja ValueType, do qual todas as estruturas herdam.Em particular, uma estrutura não pode herdar de outra.
Você não pode usar Declaração Inherits em uma definição de estrutura, mesmo que seja para especificar ValueType.
ImplementaçãoSe a estrutura usa Implementa Declaração, você deve implementar cada membro definido em cada interface que você especificar em interfacenames.
Propriedade PadrãoUma estrutura pode especificar no máximo uma propriedade como sendo sua propriedade padrão , usando o modificador Padrão (Visual Basic).Para obter mais informações, consulte Propriedades Padrão.
Comportamento
Nível de AcessoDentro de uma estrutura, você pode declarar cada membro com seu próprio nível de acesso.Todos membros de estrutura tem como padrão acesso Público (Visual Basic).Observe que se a própria estrutura tem mais de um nível de acesso restrito, automaticamente há restrição de acesso para seus membros, mesmo se você ajustar seus níveis de acesso com os modificadores de acesso.
**Escopo.**Uma estrutura é em escopo seu namespace, classe, estrutura, ou módulo.
O escopo de cada membro de estrutura é a estrutura inteira.
**Tempo de vida.**Uma estrutra não tem um tempo de vida próprio.Por sua vez, cada instância dessa estrutura tem um tempo de vida independente de todas as outras instâncias.
O tempo de vida de uma instância se inicia quando ela é criada pela cláusula Novo (Visual Basic).Ela é finalizada quando o termina tempo de vida da variável que a armazena.
Não é possível estender o tempo de vida de uma instância de estrutura.Uma aproximalão de estrutura estática é fornecida por um módulo.Para obter mais informações, consulte Declaração de Módulo.
Membros de estrutura têm tempos de vida que dependem de como e onde eles foram declarados.Para mais informações, consulte "Tempo de Vida" em Declaração Class (Visual Basic).
QualificaçãoCódigo exterior a uma estrutura deve qualificar o nome de um membro como o nome da estrutura.
Se um código interior a uma estrutura aninhada faz uma referência não qualificada a um elemento de programação, o Visual Basic procura esse elemento primeiramente na estrutura aninhada, em seguida na sua estrutura contenedora, e assim por diante até o elemento contenedor mais externo.Para obter mais informações, consulte Resolvendo uma Referência Quando Várias Variáveis Têm o Mesmo Nome.
Consumo de Memória. Assim como com todos os tipos de dado compostos, você não pode calcular, com segurança, o consumo total de memória ao se adicionar as alocações de armazenamento nominais de seus membros.Além disso, você não pode assumir, com segurança, que a ordem de armazenamento em memória é a mesma das suas declarações.Se você precisar controlar a disposição de armazenamento de uma estrutura, você pode aplicar o atributo StructLayoutAttribute à declaração Structure.
Exemplo
O exemplo a seguir usa a declaração Structure para definir um conjunto de dados relacionados para um funcionário.É mostrado o uso de membros Public,Friend, e Private para refletir a sensibilidade dos itens de dado.Também são exibidos membros de evento, propriedade e procedimento
Public Structure employee
' Public members, accessible from throughout declaration region.
Public firstName As String
Public middleName As String
Public lastName As String
' Friend members, accessible from anywhere within the same assembly.
Friend employeeNumber As Integer
Friend workPhone As Long
' Private members, accessible only from within the structure itself.
Private homePhone As Long
Private level As Integer
Private salary As Double
Private bonus As Double
' Procedure member, which can access structure's private members.
Friend Sub calculateBonus(ByVal rate As Single)
bonus = salary * CDbl(rate)
End Sub
' Property member to return employee's eligibility.
Friend ReadOnly Property eligible() As Boolean
Get
Return level >= 25
End Get
End Property
' Event member, raised when business phone number has changed.
Public Event changedWorkPhone(ByVal newPhone As Long)
End Structure
Consulte também
Tarefas
Como: Converter um tipo definido pelo usuário em uma estrutura Visual Basic
Conceitos
Referência
Declaração Class (Visual Basic)
Declaração Interface (Visual Basic)
Instrução Dim (Visual Basic)
Declaração Const (Visual Basic)