Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Declara o nome de uma estrutura e apresenta a definição das variáveis, propriedades, eventos e procedimentos que a estrutura compreende.
Sintaxe
[ <attributelist> ] [ accessmodifier ] [ Shadows ] [ Partial ] _
Structure name [ ( Of typelist ) ]
[ Implements interfacenames ]
[ datamemberdeclarations ]
[ methodmemberdeclarations ]
End Structure
Partes
Prazo | Definição |
---|---|
attributelist |
Opcional. Consulte a Lista de Atributos. |
accessmodifier |
Opcional. Pode ser um dos seguintes: - Público - Protegido - Amigo - Privado - Amigo Protegido - Proteção Privada Consulte os níveis de acesso no Visual Basic. |
Shadows |
Opcional. Veja Sombras. |
Partial |
Opcional. Indica uma definição parcial da estrutura. Consulte Parcial. |
name |
Obrigatório Nome dessa estrutura. Consulte nomes de elementos declarados. |
Of |
Opcional. Especifica que essa é uma estrutura genérica. |
typelist |
Obrigatório se você usar a palavra-chave De . Lista de parâmetros de tipo para essa estrutura. Consulte a Lista de Tipos. |
Implements |
Opcional. Indica que essa estrutura implementa os membros de uma ou mais interfaces. Consulte a instrução Implements. |
interfacenames |
Necessário se você usar a Implements instrução. Os nomes das interfaces que essa estrutura implementa. |
datamemberdeclarations |
Obrigatório Zero ou maisConst , Dim ou Enum Event instruções declarando membros de dados da estrutura. |
methodmemberdeclarations |
Opcional. Zero ou mais declarações de Function , Operator , Property ou Sub procedimentos, que servem como membros do método da estrutura. |
End Structure |
Obrigatório Encerra a Structure definição. |
Observações
A Structure
instrução define um tipo de valor composto que você pode personalizar. Uma estrutura é uma generalização do UDT (tipo definido pelo usuário) das versões anteriores do Visual Basic. Para obter mais informações, consulte Estruturas.
As estruturas dão suporte a muitos dos mesmos recursos que as classes. Por exemplo, as estruturas podem ter propriedades e procedimentos, podem implementar interfaces e podem ter construtores parametrizados. No entanto, há diferenças significativas entre estruturas e classes em áreas como herança, declarações e uso. Além disso, as classes são tipos de referência e estruturas são tipos de valor. Para obter mais informações, consulte Estruturas e Classes.
Você só pode usar Structure
no namespace ou no nível do módulo. Isso significa que o contexto de declaração de uma estrutura deve ser um arquivo de origem, namespace, classe, estrutura, módulo ou interface e não pode ser um procedimento ou bloco. Para obter mais informações, consulte contextos de declaração e níveis de acesso padrão.
Estruturas padrão para acesso ao Amigo . Você pode ajustar seus níveis de acesso com os modificadores de acesso. Para obter mais informações, consulte os níveis de acesso no Visual Basic.
Regras
Nidificação. Você pode definir uma estrutura dentro de outra. A estrutura externa é chamada de estrutura de contenção e a estrutura interna é chamada de estrutura aninhada. No entanto, você não pode acessar os membros de uma estrutura aninhada por meio da estrutura que contém. Em vez disso, você deve declarar uma variável do tipo de dados da estrutura aninhada.
Declaração de Membro. Você deve declarar cada membro de uma estrutura. Não é possível proteger um membro da estrutura ou
Protected Friend
porque nada pode herdar de uma estrutura. A estrutura em si, no entanto, pode serProtected
ouProtected Friend
.Você pode declarar zero ou mais variáveis não compartilhadas ou eventos não compartilhados e não compartilhados em uma estrutura. Você não pode ter apenas constantes, propriedades e procedimentos, mesmo que algumas delas não sejam compartilhadas.
Inicialização. Você não pode inicializar o valor de qualquer membro de dados não compartilhados de uma estrutura como parte de sua declaração. Você deve inicializar esse membro de dados por meio de um construtor parametrizado na estrutura ou atribuir um valor ao membro depois de criar uma instância da estrutura.
Herança. Uma estrutura não pode herdar de qualquer tipo que não ValueTypeseja , do qual todas as estruturas herdam. Em particular, uma estrutura não pode herdar de outra.
Você não pode usar a Instrução Inherits em uma definição de estrutura, mesmo para especificar ValueType.
Implementação. Se a estrutura usar a Instrução Implements, você deverá implementar todos os membros definidos por cada interface especificada.
interfacenames
Propriedade Padrão. Uma estrutura pode especificar no máximo uma propriedade como sua propriedade padrão, usando o modificador Padrão . Para obter mais informações, consulte Padrão.
Comportamento
Nível de acesso. Dentro de uma estrutura, você pode declarar cada membro com seu próprio nível de acesso. Todos os membros da estrutura são padrão para acesso público . Observe que, se a estrutura em si tiver um nível de acesso mais restrito, isso restringirá automaticamente o acesso aos seus membros, mesmo se você ajustar seus níveis de acesso com os modificadores de acesso.
Escopo. Uma estrutura está no escopo em todo o namespace, classe, estrutura ou módulo que contém.
O escopo de cada membro da estrutura é toda a estrutura.
Vida. Uma estrutura em si não tem vida útil. Em vez disso, 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 começa quando ela é criada por uma cláusula New Operator . Ela termina quando o tempo de vida da variável que a mantém termina.
Você não pode estender o tempo de vida de uma instância de estrutura. Uma aproximação à funcionalidade de estrutura estática é fornecida por um módulo. Para obter mais informações, consulte a Instrução module.
Os membros da estrutura têm tempo de vida dependendo de como e onde são declarados. Para obter mais informações, consulte "Tempo de vida" na Instrução de Classe.
Qualificação. O código fora de uma estrutura deve qualificar o nome de um membro com o nome dessa estrutura.
Se o código dentro de uma estrutura aninhada fizer uma referência não qualificada a um elemento de programação, o Visual Basic procurará o elemento primeiro na estrutura aninhada e, em seguida, em sua estrutura de contenção e assim por diante até o elemento que contém mais externo. Para obter mais informações, consulte Referências a Elementos Declarados.
Consumo de memória. Assim como acontece com todos os tipos de dados compostos, você não pode calcular com segurança o consumo total de memória de uma estrutura adicionando as alocações de armazenamento nominal de seus membros. Além disso, você não pode assumir com segurança que a ordem de armazenamento na memória é a mesma que sua ordem de declaração. Se você precisar controlar o layout de armazenamento de uma estrutura, poderá aplicar o StructLayoutAttribute atributo à instrução
Structure
.
Exemplo
O exemplo a seguir usa a Structure
instrução para definir um conjunto de dados relacionados para um funcionário. Ele mostra o uso de Public
, Friend
e Private
membros para refletir a confidencialidade dos itens de dados. Ele também mostra o procedimento, a propriedade e os membros do evento.
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
Para obter mais informações sobre como usar Structure
s, consulte Structure Variable.