Delen via


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, Dimof EnumEvent instructies die gegevensleden van de structuur declareren.
methodmemberdeclarations Optioneel. Nul of meer declaraties vanFunction, Operatorof PropertySub 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 wel Protected of Protected 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, Frienden 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 Structurevan s.

Zie ook