Structuurinstructie
Declareert de naam van een structuur en introduceert de definitie van de variabelen, eigenschappen, gebeurtenissen en procedures die de structuur omvat.
Syntaxis
[ <attributelist> ] [ accessmodifier ] [ Shadows ] [ Partial ] _
Structure name [ ( Of typelist ) ]
[ Implements interfacenames ]
[ datamemberdeclarations ]
[ methodmemberdeclarations ]
End Structure
generator
Term | Definitie |
---|---|
attributelist |
Optioneel. Zie de lijst met kenmerken. |
accessmodifier |
Optioneel. Dit kan een van de volgende zijn: - Openbaar - Beschermd - Vriend - Privé - Beveiligde vriend - Privé beveiligd Zie Access-niveaus in Visual Basic. |
Shadows |
Optioneel. Zie schaduwen. |
Partial |
Optioneel. Geeft een gedeeltelijke definitie van de structuur aan. Zie Gedeeltelijk. |
name |
Vereist. Naam van deze structuur. Zie Gedeclareerde elementnamen. |
Of |
Optioneel. Hiermee geeft u op dat dit een algemene structuur is. |
typelist |
Vereist als u het trefwoord Van gebruikt. Lijst met typeparameters voor deze structuur. Zie Lijst met typen. |
Implements |
Optioneel. Geeft aan dat deze structuur de leden van een of meer interfaces implementeert. Zie Implementatie-instructie. |
interfacenames |
Vereist als u de Implements instructie gebruikt. De namen van de interfaces die deze structuur implementeert. |
datamemberdeclarations |
Vereist. Nul of meerConst , Dim of Enum Event instructies die gegevensleden van de structuur declareren. |
methodmemberdeclarations |
Optioneel. Nul of meer declaraties vanFunction , Operator of Property Sub procedures, die dienen als methodeleden van de structuur. |
End Structure |
Vereist. Hiermee wordt de Structure definitie beëindigd. |
Opmerkingen
De Structure
instructie definieert een samengesteld waardetype dat u kunt aanpassen. Een structuur is een generalisatie van het door de gebruiker gedefinieerde type (UDT) van eerdere versies van Visual Basic. Zie Structuren voor meer informatie.
Structuren ondersteunen veel van dezelfde functies als klassen. Structuren kunnen bijvoorbeeld eigenschappen en procedures hebben, ze kunnen interfaces implementeren en ze kunnen geparameteriseerde constructors hebben. Er zijn echter aanzienlijke verschillen tussen structuren en klassen op gebieden zoals overname, declaraties en gebruik. Klassen zijn referentietypen en structuren zijn waardetypen. Zie Structuren en klassen voor meer informatie.
U kunt alleen op naamruimte- of moduleniveau gebruiken Structure
. Dit betekent dat de declaratiecontext voor een structuur een bronbestand, naamruimte, klasse, structuur, module of interface moet zijn en geen procedure of blok kan zijn. Zie Declaratiecontexten en standaardtoegangsniveaus voor meer informatie.
Structuren zijn standaard ingesteld op Vriend-toegang . U kunt hun toegangsniveaus aanpassen met de toegangsaanpassingen. Zie Access-niveaus in Visual Basic voor meer informatie.
Regels
Nesten. U kunt één structuur binnen een andere structuur definiëren. De buitenste structuur wordt de structuur met de structuur genoemd en de binnenste structuur wordt een geneste structuur genoemd. U hebt echter geen toegang tot de leden van een geneste structuur via de structuur die deze bevat. In plaats daarvan moet u een variabele van het gegevenstype van de geneste structuur declareren.
Verklaring van lid. U moet elk lid van een structuur declareren. Een structuurlid kan niet worden beveiligd of
Protected Friend
omdat niets kan overnemen van een structuur. De structuur zelf kan echter welProtected
ofProtected Friend
.U kunt nul of meer niet-gedeelde variabelen of niet-gedeelde, niet-aangepaste gebeurtenissen in een structuur declareren. U kunt niet alleen constanten, eigenschappen en procedures hebben, zelfs als sommige niet-gedeeld zijn.
Initialisatie. U kunt de waarde van een niet-gedeeld gegevenslid van een structuur niet initialiseren als onderdeel van de declaratie. U moet een dergelijk gegevenslid initialiseren met behulp van een geparameteriseerde constructor op de structuur of een waarde toewijzen aan het lid nadat u een exemplaar van de structuur hebt gemaakt.
Overname. Een structuur kan niet worden overgenomen van een ander type dan ValueType, waarvan alle structuren overnemen. Met name de ene structuur kan niet worden overgenomen van een andere structuur.
U kunt de instructie Overnames niet gebruiken in een structuurdefinitie, zelfs niet om op te geven ValueType.
Uitvoering. Als de structuur gebruikmaakt van de instructie Implements, moet u elk lid implementeren dat is gedefinieerd door elke interface die u opgeeft.
interfacenames
Standaardeigenschap. Een structuur kan maximaal één eigenschap opgeven als standaardeigenschap, met behulp van de standaardaanpassingsfunctie . Zie Standaard voor meer informatie.
Gedrag
Toegangsniveau. Binnen een structuur kunt u elk lid met een eigen toegangsniveau declareren. Alle structuurleden zijn standaard ingesteld op Openbare toegang. Houd er rekening mee dat als de structuur zelf een beperkter toegangsniveau heeft, de toegang tot de leden automatisch wordt beperkt, zelfs als u hun toegangsniveaus aanpast met de toegangsaanpassingen.
Reikwijdte. Een structuur bevindt zich binnen het bereik van de structuur met naamruimte, klasse, structuur of module.
Het bereik van elk structuurlid is de hele structuur.
Levensduur. Een structuur heeft zelf geen levensduur. In plaats daarvan heeft elk exemplaar van die structuur een levensduur onafhankelijk van alle andere exemplaren.
De levensduur van een exemplaar begint wanneer het wordt gemaakt door een nieuwe operatorcomponent . Het eindigt wanneer de levensduur van de variabele die de variabele bevat, eindigt.
U kunt de levensduur van een structuurexemplaren niet verlengen. Een benadering van de functionaliteit van statische structuur wordt geleverd door een module. Zie Module-instructie voor meer informatie.
Structuurleden hebben levensduur, afhankelijk van hoe en waar ze worden gedeclareerd. Zie 'Levensduur' in de klasse-instructie voor meer informatie.
Kwalificatie. Code buiten een structuur moet de naam van een lid kwalificeren met de naam van die structuur.
Als code in een geneste structuur een niet-gekwalificeerde verwijzing naar een programmeerelement maakt, zoekt Visual Basic eerst naar het element in de geneste structuur, vervolgens in de bijbehorende structuur, enzovoort naar het buitenste element dat het bevat. Zie Verwijzingen naar gedeclareerde elementen voor meer informatie.
Geheugenverbruik. Net als bij alle samengestelde gegevenstypen kunt u het totale geheugenverbruik van een structuur niet veilig berekenen door de nominale opslagtoewijzingen van de leden samen te voegen. Bovendien kunt u er niet veilig van uitgaan dat de opslagvolgorde in het geheugen gelijk is aan uw declaratievolgorde. Als u de opslagindeling van een structuur wilt beheren, kunt u het StructLayoutAttribute kenmerk toepassen op de
Structure
instructie.
Opmerking
In het volgende voorbeeld wordt de Structure
instructie gebruikt om een set gerelateerde gegevens voor een werknemer te definiëren. Het toont het gebruik van Public
, Friend
en Private
leden om de gevoeligheid van de gegevensitems weer te geven. Ook worden procedure-, eigenschaps- en gebeurtenisleden weergegeven.
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
Zie Structuurvariabele voor meer informatie over het gebruik Structure
van s.