Struktursats
Deklarerar namnet på en struktur och introducerar definitionen av variabler, egenskaper, händelser och procedurer som strukturen består av.
Syntax
[ <attributelist> ] [ accessmodifier ] [ Shadows ] [ Partial ] _
Structure name [ ( Of typelist ) ]
[ Implements interfacenames ]
[ datamemberdeclarations ]
[ methodmemberdeclarations ]
End Structure
Delar
Period | Definition |
---|---|
attributelist |
Valfritt. Se Attributlista. |
accessmodifier |
Valfritt. Kan vara något av följande: - Offentliga - Skyddade - Vän - Privat - Skyddad vän - Privat skyddad Se Åtkomstnivåer i Visual Basic. |
Shadows |
Valfritt. Se Skuggor. |
Partial |
Valfritt. Anger en partiell definition av strukturen. Se Partiell. |
name |
Obligatoriska. Namnet på den här strukturen. Se Deklarerade elementnamn. |
Of |
Valfritt. Anger att detta är en allmän struktur. |
typelist |
Krävs om du använder nyckelordet Av . Lista över typparametrar för den här strukturen. Se Typlista. |
Implements |
Valfritt. Anger att den här strukturen implementerar medlemmarna i ett eller flera gränssnitt. Se Implementeringsinstruktor. |
interfacenames |
Krävs om du använder -instruktionen Implements . Namnen på de gränssnitt som den här strukturen implementerar. |
datamemberdeclarations |
Obligatoriska. Noll eller fler Const , Dim , Enum eller Event instruktioner som deklarerar datamedlemmar i strukturen. |
methodmemberdeclarations |
Valfritt. Noll eller fler deklarationer av Function , Operator , Property eller Sub procedurer, som fungerar som metodmedlemmar i strukturen. |
End Structure |
Obligatoriska. Structure Avslutar definitionen. |
Kommentarer
Instruktionen Structure
definierar en sammansatt värdetyp som du kan anpassa. En struktur är en generalisering av den användardefinierade typen (UDT) av tidigare versioner av Visual Basic. Mer information finns i Strukturer.
Strukturer stöder många av samma funktioner som klasser. Strukturer kan till exempel ha egenskaper och procedurer, de kan implementera gränssnitt och ha parametriserade konstruktorer. Det finns dock betydande skillnader mellan strukturer och klasser inom områden som arv, deklarationer och användning. Klasser är också referenstyper och strukturer är värdetyper. Mer information finns i Strukturer och klasser.
Du kan bara använda Structure
på namnområdes- eller modulnivå. Det innebär att deklarationskontexten för en struktur måste vara en källfil, namnrymd, klass, struktur, modul eller gränssnitt och kan inte vara en procedur eller ett block. Mer information finns i Deklarationskontexter och standardåtkomstnivåer.
Strukturer som standard för vänåtkomst . Du kan justera deras åtkomstnivåer med åtkomstmodifierarna. Mer information finns i Åtkomstnivåer i Visual Basic.
Regler
Häckande. Du kan definiera en struktur i en annan. Den yttre strukturen kallas för den innehållande strukturen och den inre strukturen kallas för en kapslad struktur. Du kan dock inte komma åt medlemmar i en kapslad struktur via den innehållande strukturen. I stället måste du deklarera en variabel för den kapslade strukturens datatyp.
Medlemsdeklaration. Du måste deklarera varje medlem i en struktur. En strukturmedlem kan inte skyddas eller
Protected Friend
eftersom ingenting kan ärva från en struktur. Själva strukturen kan dock varaProtected
ellerProtected Friend
.Du kan deklarera noll eller fler icke-delade variabler eller icke-delade, icke-anpassade händelser i en struktur. Du kan inte bara ha konstanter, egenskaper och procedurer, även om vissa av dem inte delas.
Initiering. Du kan inte initiera värdet för någon icke-delad datamedlem i en struktur som en del av deklarationen. Du måste antingen initiera en sådan datamedlem med hjälp av en parameteriserad konstruktor i strukturen eller tilldela ett värde till medlemmen när du har skapat en instans av strukturen.
Arv. En struktur kan inte ärva från någon annan typ än ValueType, från vilken alla strukturer ärver. I synnerhet kan en struktur inte ärva från en annan.
Du kan inte använda instruktionen Inherits i en strukturdefinition, inte ens för att ange ValueType.
Genomförandet. Om strukturen använder Implements-instruktionen måste du implementera varje medlem som definierats av varje gränssnitt som du anger i
interfacenames
.Standardegenskap. En struktur kan ange högst en egenskap som standardegenskap med hjälp av standardmodifieraren. Mer information finns i Standard.
Funktionssätt
Åtkomstnivå. I en struktur kan du deklarera varje medlem med sin egen åtkomstnivå. Alla strukturmedlemmar är standard för offentlig åtkomst. Observera att om själva strukturen har en mer begränsad åtkomstnivå begränsar detta automatiskt åtkomsten till dess medlemmar, även om du justerar deras åtkomstnivåer med åtkomstmodifierarna.
Omfattning. En struktur finns i omfånget i dess innehållande namnrymd, klass, struktur eller modul.
Omfånget för varje strukturmedlem är hela strukturen.
Livslängd. En struktur har inte en livslängd. I stället har varje instans av den strukturen en livslängd som är oberoende av alla andra instanser.
Livslängden för en instans börjar när den skapas av en ny operator-sats . Den slutar när livslängden för variabeln som innehåller den slutar.
Du kan inte förlänga livslängden för en strukturinstans. En uppskattning av funktionen för statisk struktur tillhandahålls av en modul. Mer information finns i Modulöversikt.
Strukturmedlemmar har livslängd beroende på hur och var de deklareras. Mer information finns i "Livslängd" i klassuttryck.
Kvalifikationer. Kod utanför en struktur måste kvalificera en medlems namn med namnet på den strukturen.
Om kod i en kapslad struktur gör en okvalificerad referens till ett programmeringselement söker Visual Basic efter elementet först i den kapslade strukturen, sedan i dess innehållande struktur och så vidare ut till det yttersta elementet som innehåller elementet. Mer information finns i Referenser till deklarerade element.
Minnesförbrukning. Som med alla sammansatta datatyper kan du inte på ett säkert sätt beräkna den totala minnesförbrukningen för en struktur genom att lägga ihop de nominella lagringsallokeringarna för dess medlemmar. Dessutom kan du inte på ett säkert sätt anta att lagringsordningen i minnet är samma som din deklarationsordning. Om du behöver styra lagringslayouten för en struktur kan du använda StructLayoutAttribute attributet för -instruktionen
Structure
.
Exempel
I följande exempel används -instruktionen Structure
för att definiera en uppsättning relaterade data för en anställd. Den visar användningen av Public
, Friend
och Private
medlemmar för att återspegla dataobjektens känslighet. Den visar även procedur-, egenskaps- och händelsemedlemmar.
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
Mer information om hur du använder Structure
s finns i Strukturvariabel.