Share via


Declaraçã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

Termo

Definição

attributelist

Opcional.Veja Lista de Atributos.

accessmodifier

Opcional.Pode ser um dos seguintes:

Consulte Níveis de acesso em Visual Basic.

Shadows

Opcional.Acesse Shadows.

Partial

Opcional.Indica uma definição parcial da estrutura.Consulte Parcial (Visual Basic).

name

Obrigatório.Nome dessa estrutura.Consulte Nomes de elementos declarados (Visual Basic).

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.Consulte Instrução Implements.

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 (Visual Basic).

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 (Visual Basic).

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 Níveis de acesso padrão (Visual Basic) e os contextos de declaração.

O padrão para estruturas é acesso Amigo (Visual Basic).Você pode ajustar os seus 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 herdar de qualquer tipo diferente de ValueType, do qual herdam todas as estruturas.Em particular, uma estrutura não pode herdar de outra.

    Você não pode usar Herda a instrução em uma definição de estrutura, mesmo que seja para especificar ValueType.

  • Implementação. Se a estrutura usa a Instrução Implements, você deve implementar cada membro definido por cada interface especificada em interfacenames.

  • Propriedade padrão. Uma estrutura pode especificar no máximo uma propriedade como sua propriedade padrão, usando o Padrão (Visual Basic) modificador.Para obter mais informações, consulte Padrão (Visual Basic).

Comportamento

  • Nível de acesso. Dentro 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 Operador New (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 do 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 de classe (Visual Basic).

  • Qualificação Có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 Referências aos elementos declarados (Visual Basic).

  • 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

Referência

Declaração de classe (Visual Basic)

Instrução (Visual Basic) de interface.

Declaração do módulo

Instrução (Visual Basic) Dim

Instrução const (Visual Basic)

Instrução enum (Visual Basic)

Declaração de evento

Instrução Operator

Instrução Property

Conceitos

Estruturas e Classes (Visual Basic)