Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Deklariert den Namen einer Struktur und führt die Definition der Variablen, Eigenschaften, Ereignisse und Prozeduren ein, die die Struktur umfasst.
Syntax
[ <attributelist> ] [ accessmodifier ] [ Shadows ] [ Partial ] _
Structure name [ ( Of typelist ) ]
[ Implements interfacenames ]
[ datamemberdeclarations ]
[ methodmemberdeclarations ]
End Structure
Bestandteile
| Begriff | Definition |
|---|---|
attributelist |
Wahlfrei. Siehe Attributliste. |
accessmodifier |
Wahlfrei. Dabei kann es sich um eine der folgenden Methoden handeln: - Öffentlich - Geschützt - Freund - Privat - Geschützter Freund - Privat geschützt Siehe Access-Ebenen in Visual Basic. |
Shadows |
Wahlfrei. Siehe Schatten. |
Partial |
Wahlfrei. Gibt eine partielle Definition der Struktur an. Siehe Teilweise. |
name |
Erforderlich. Name dieser Struktur. Siehe deklarierte Elementnamen. |
Of |
Wahlfrei. Gibt an, dass es sich um eine generische Struktur handelt. |
typelist |
Erforderlich, wenn Sie das Schlüsselwort "Of" verwenden. Liste der Typparameter für diese Struktur. Siehe Typliste. |
Implements |
Wahlfrei. Gibt an, dass diese Struktur die Member einer oder mehrerer Schnittstellen implementiert. Siehe Implements-Anweisung. |
interfacenames |
Erforderlich, wenn Sie die Implements Anweisung verwenden. Die Namen der Schnittstellen, die diese Struktur implementiert. |
datamemberdeclarations |
Erforderlich. Null oder mehr Const, Dim, Enum, oder Event Anweisungen deklarieren Datenmber der Struktur. |
methodmemberdeclarations |
Wahlfrei. Null oder mehr Deklarationen von Function, , Operator, Propertyoder Sub Prozeduren, die als Methodenmmber der Struktur dienen. |
End Structure |
Erforderlich. Beendet die Structure Definition. |
Bemerkungen
Die Structure Anweisung definiert einen zusammengesetzten Werttyp, den Sie anpassen können. Eine Struktur ist eine Generalisierung des benutzerdefinierten Typs (UDT) früherer Versionen von Visual Basic. Weitere Informationen finden Sie unter "Strukturen".
Strukturen unterstützen viele der gleichen Features wie Klassen. Beispielsweise können Strukturen Eigenschaften und Prozeduren haben, sie können Schnittstellen implementieren und parametrisierte Konstruktoren haben. Es gibt jedoch erhebliche Unterschiede zwischen Strukturen und Klassen in Bereichen wie Vererbung, Deklarationen und Verwendung. Außerdem sind Klassen Referenztypen und Strukturen Werttypen. Weitere Informationen finden Sie unter "Strukturen und Klassen".
Sie können nur auf Namespace- oder Modulebene verwenden Structure . Dies bedeutet, dass der Deklarationskontext für eine Struktur eine Quelldatei, ein Namespace, eine Klasse, eine Struktur, ein Modul oder eine Schnittstelle sein muss und keine Prozedur oder ein Block sein kann. Weitere Informationen finden Sie unter Deklarationskontexte und Standardzugriffsebenen.
Strukturen werden standardmäßig für den Friend-Zugriff verwendet. Sie können ihre Zugriffsebenen mit den Zugriffsmodifizierern anpassen. Weitere Informationen finden Sie unter Access-Ebenen in Visual Basic.
Regeln
Schachtelung. Sie können eine Struktur innerhalb einer anderen definieren. Die äußere Struktur wird als enthaltende Struktur bezeichnet, und die innere Struktur wird als geschachtelte Struktur bezeichnet. Sie können jedoch nicht über die enthaltende Struktur auf die Member einer geschachtelten Struktur zugreifen. Stattdessen müssen Sie eine Variable des Datentyps der geschachtelten Struktur deklarieren.
Memberdeklaration. Sie müssen jedes Element einer Struktur deklarieren. Ein Strukturmember kann nicht geschützt werden oder
Protected Friendweil nichts von einer Struktur erben kann. Die Struktur selbst kann jedoch seinProtectedoderProtected Friend.Sie können null oder mehr nicht freigabefähige Variablen oder nicht teilene Ereignisse in einer Struktur deklarieren. Sie können nicht nur Konstanten, Eigenschaften und Prozeduren haben, auch wenn einige davon nicht teilen.
Initialisierung. Sie können den Wert eines nicht freigebenen Datenelements einer Struktur nicht als Teil der Deklaration initialisieren. Sie müssen ein solches Datenelement entweder mithilfe eines parametrisierten Konstruktors für die Struktur initialisieren oder dem Element einen Wert zuweisen, nachdem Sie eine Instanz der Struktur erstellt haben.
Erbschaft. Eine Struktur kann nicht von einem anderen ValueTypeTyp als , von dem alle Strukturen erben, erben. Insbesondere kann eine Struktur nicht von einer anderen erben.
Sie können die Inherits-Anweisung nicht in einer Strukturdefinition verwenden, auch um anzugeben ValueType.
Implementierung. Wenn die Struktur die Implements-Anweisung verwendet, müssen Sie jedes Element implementieren, das von jeder Schnittstelle definiert wird, in
interfacenamesder Sie angeben.Default-Eigenschaft. Eine Struktur kann höchstens eine Eigenschaft als Standardeigenschaft mithilfe des Standardmodifizierers angeben. Weitere Informationen finden Sie unter "Standard".
Verhalten
Zugriffsebene. Innerhalb einer Struktur können Sie jedes Element mit einer eigenen Zugriffsebene deklarieren. Alle Strukturmber werden standardmäßig für den öffentlichen Zugriff verwendet. Beachten Sie: Wenn die Struktur selbst eine eingeschränktere Zugriffsstufe aufweist, wird dadurch automatisch der Zugriff auf seine Mitglieder eingeschränkt, auch wenn Sie deren Zugriffsebenen mit den Zugriffsmodifizierern anpassen.
Bereich. Eine Struktur befindet sich im Gesamten des zugehörigen Namespaces, der Klasse, der Struktur oder des Moduls.
Der Umfang jedes Strukturelements ist die gesamte Struktur.
Lebensdauer. Eine Struktur selbst hat keine Lebensdauer. Vielmehr verfügt jede Instanz dieser Struktur über eine Lebensdauer unabhängig von allen anderen Instanzen.
Die Lebensdauer einer Instanz beginnt, wenn sie von einer New Operator-Klausel erstellt wird. Sie endet, wenn die Lebensdauer der Variablen, die sie enthält, endet.
Sie können die Lebensdauer einer Strukturinstanz nicht verlängern. Eine Annäherung an statische Strukturfunktionen wird von einem Modul bereitgestellt. Weitere Informationen finden Sie unter Module-Anweisung.
Strukturmber haben Lebensdauern, je nachdem, wie und wo sie deklariert werden. Weitere Informationen finden Sie unter "Lifetime" in Class Statement.
Qualifikation. Code außerhalb einer Struktur muss den Namen eines Elements mit dem Namen dieser Struktur qualifizieren.
Wenn Code innerhalb einer geschachtelten Struktur einen nicht qualifizierten Verweis auf ein Programmierelement macht, sucht Visual Basic zuerst in der geschachtelten Struktur nach dem Element, dann in seiner enthaltenden Struktur usw. auf das äußerste enthaltende Element. Weitere Informationen finden Sie unter Verweise auf deklarierte Elemente.
Arbeitsspeicherverbrauch. Wie bei allen zusammengesetzten Datentypen können Sie den gesamtspeicherverbrauch einer Struktur nicht sicher berechnen, indem Sie die nominalen Speicherzuordnungen ihrer Member hinzufügen. Darüber hinaus können Sie nicht sicher davon ausgehen, dass die Reihenfolge des Speichers im Arbeitsspeicher mit Ihrer Deklarationsreihenfolge identisch ist. Wenn Sie das Speicherlayout einer Struktur steuern müssen, können Sie das StructLayoutAttribute Attribut auf die
StructureAnweisung anwenden.
Beispiel
Im folgenden Beispiel wird die Structure Anweisung verwendet, um einen Satz verwandter Daten für einen Mitarbeiter zu definieren. Es zeigt die Verwendung von Public, Friendund Private Member, um die Vertraulichkeit der Datenelemente widerzuspiegeln. Außerdem werden Prozedur-, Eigenschafts- und Ereignismmber angezeigt.
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
Weitere Informationen zur Verwendung von Structures finden Sie unter "Strukturvariable".