Freigeben über


Structure Statement

Deklariert den Namen einer Struktur und führt die Definitionen der Variablen, Eigenschaften, Ereignisse und Prozeduren ein, aus denen die Struktur besteht.

[ <attributelist> ] [ accessmodifier ] [ Shadows ] [ Partial ] _
Structure name [ ( Of typelist ) ]
    [ Implements interfacenames ]
    [ datamemberdeclarations ]
    [ methodmemberdeclarations ]
End Structure

Teile

Begriff

Definition

attributelist

Dies ist optional. Siehe Attributliste.

accessmodifier

Dies ist optional. Einer der folgenden Werte ist möglich:

Siehe Zugriffsebenen in Visual Basic.

Shadows

Dies ist optional. Siehe Shadows.

Partial

Dies ist optional. Gibt eine partielle Definition der Struktur an. Siehe Partial (Visual Basic).

name

Erforderlich. Name der Struktur. Siehe Namen deklarierter Elemente (Visual Basic).

Of

Dies ist optional. Gibt an, dass dies eine generische Struktur ist.

typelist

Erforderlich, wenn Sie das Of-Schlüsselwort verwenden. Liste mit Typparametern für diese Struktur. Siehe Typliste.

Implements

Dies ist optional. 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 von dieser Struktur implementierten Schnittstellen.

datamemberdeclarations

Erforderlich. Null oder mehrere der Anweisungen Const, Dim, Enum oder Event, die Datenmember der Struktur deklarieren.

methodmemberdeclarations

Dies ist optional. Null oder mehr Deklarationen der Prozeduren Function, Operator, Property oder Sub, die als Methodenmember der Struktur fungieren.

End Structure

Erforderlich. Beendet die Structure-Definition.

Hinweise

Die Structure-Anweisung definiert einen zusammengesetzten Werttyp, den Sie anpassen können. Eine Struktur ist eine Verallgemeinerung des benutzerdefinierten Typs (UDT, User-Defined Type) aus älteren Versionen von Visual Basic. Weitere Informationen finden Sie unter Strukturen (Visual Basic).

Strukturen unterstützen viele Funktionen, die auch von Klassen unterstützt werden. Strukturen können z. B. Eigenschaften und Prozeduren aufweisen, Schnittstellen implementieren und parametrisierte Konstruktoren enthalten. Allerdings bestehen zwischen Strukturen und Klassen erhebliche Unterschiede in den Bereichen Vererbung, Deklarationen und Verwendung. Außerdem sind Klassen Verweistypen, und Strukturen sind Werttypen. Weitere Informationen finden Sie unter Strukturen und Klassen (Visual Basic).

Structure kann nur auf Namespace- oder Modulebene verwendet werden. 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 weder eine Prozedur noch ein Block sein kann. Weitere Informationen finden Sie unter Deklarationskontexte und Standardzugriffsebenen (Visual Basic).

Der Standardzugriff für Strukturen ist Friend (Visual Basic). Sie können ihre Zugriffsebenen mit den Zugriffsmodifizierern anpassen. Weitere Informationen finden Sie unter Zugriffsebenen in Visual Basic.

Regeln

  • Schachtelung. Sie können eine Struktur in einer anderen Struktur definieren. Die äußere Struktur wird als enthaltende Struktur und die innere Struktur 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 mit dem Datentyp der geschachtelten Struktur deklarieren.

  • Memberdeklaration. Sie müssen jeden Member einer Struktur deklarieren. Ein Strukturmember kann nicht Protected oder Protected Friend sein, da aus einer Struktur nicht geerbt werden kann. Die Struktur selbst kann jedoch Protected oder Protected Friend sein.

    Sie können in einer Struktur null oder mehr nicht freigegebene Variablen oder nicht freigegebene nicht benutzerdefinierte Ereignisse deklarieren. Es ist nicht möglich, nur Konstanten, Eigenschaften und Prozeduren zu definieren, selbst wenn einige davon nicht gemeinsam genutzt werden.

  • Initialisierung. Der Wert von nicht freigegebenen Datenmembern einer Struktur kann nicht als Teil der Deklaration initialisiert werden. Sie müssen einen solchen Datenmember entweder mit einem parametrisierten Konstruktor auf Strukturebene initialisieren oder dem Member nach dem Erstellen einer Instanz der Struktur einen Wert zuweisen.

  • Vererbung. Eine Struktur kann von keinem anderen Typ als von ValueType erben, von dem alle Strukturen erben. Insbesondere kann eine Struktur nicht von einer anderen Struktur erben.

    Sie können die Inherits-Anweisung nicht in einer Strukturdefinition verwenden, auch nicht zum Angeben von ValueType.

  • Implementierung. Wenn von der Struktur die Implements-Anweisung verwendet wird, müssen Sie alle Member implementieren, die durch die einzelnen in interfacenames angegebenen Schnittstellen definiert sind.

  • Standardeigenschaft. Für eine Struktur kann höchstens eine Eigenschaft als Standardeigenschaft angegeben werden. Verwenden Sie hierzu den Modifizierer Default (Visual Basic). Weitere Informationen finden Sie unter Default (Visual Basic).

Verhalten

  • Zugriffsebene. In einer Struktur können Sie jeden Member mit einer eigenen Zugriffsebene deklarieren. Der Standardzugriff für alle Strukturmember ist Public (Visual Basic). Beachten Sie, dass der Zugriff auf die Member einer Struktur automatisch eingeschränkt ist, wenn die Struktur selbst über eine restriktivere Zugriffsebene verfügt, selbst wenn Sie die Zugriffsebenen der Member mit den Zugriffsmodifizierern anpassen.

  • Bereich. Der Gültigkeitsbereich einer Struktur umfasst den Namespace, die Klasse, Struktur oder das Modul, in dem bzw. der sich die Struktur befindet.

    Der Gültigkeitsbereich eines Strukturmembers umfasst die gesamte Struktur.

  • Lebensdauer. Eine Struktur selbst verfügt nicht über eine Lebensdauer. Stattdessen verfügt jede Instanz der Struktur über eine Lebensdauer, die von allen anderen Instanzen unabhängig ist.

    Die Lebensdauer einer Instanz beginnt mit ihrer Erstellung durch eine Operator New (Visual Basic)-Klausel. Sie endet, wenn die enthaltende Lebensdauer der Variablen endet.

    Sie können die Lebensdauer einer Strukturinstanz nicht verlängern. Eine den Funktionen einer statischen Struktur ähnelnde Funktionalität wird von einem Modul bereitgestellt. Weitere Informationen finden Sie unter Module-Anweisung.

    Strukturmember verfügen über eine Lebensdauer, die davon abhängt, wie und wo sie deklariert werden. Weitere Informationen finden Sie in Class-Anweisung (Visual Basic) unter "Lebensdauer".

  • Qualifikation. In Code außerhalb einer Struktur muss der Name eines Members mit dem Namen dieser Struktur qualifiziert werden.

    Wenn Code in einer geschachtelten Struktur einen nicht qualifizierten Verweis auf ein Programmierelement enthält, wird von Visual Basic das Element zunächst in der geschachtelten Struktur gesucht, anschließend in der enthaltenden Struktur und so weiter bis zum äußersten enthaltenden Element. Weitere Informationen finden Sie unter Verweise auf deklarierte Elemente (Visual Basic).

  • Speicherverbrauch. Wie bei allen zusammengesetzten Datentypen können Sie den gesamten Speicherverbrauch auch bei Strukturen nicht dadurch zuverlässig berechnen, indem Sie die nominalen Speicherbelegungen ihrer Member addieren. Darüber hinaus können Sie nicht davon ausgehen, dass die Member im Speicher in derselben Reihenfolge wie in der Deklaration angeordnet sind. Wenn Sie das Speicherlayout einer Struktur steuern müssen, können Sie das StructLayoutAttribute-Attribut auf die Structure-Anweisung anwenden.

Beispiel

Im folgenden Beispiel wird die Structure-Anweisung für die Definition einer Gruppe verknüpfter Daten für einen Mitarbeiter verwendet. Es veranschaulicht die Verwendung von Membern mit dem Zugriff Public, Friend und Private, um den Grad der Vertraulichkeit der Datenelemente anzugeben. Es zeigt außerdem Prozedur-, Eigenschaften- und Ereignismember.

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

Siehe auch

Referenz

Class-Anweisung (Visual Basic)

Interface-Anweisung (Visual Basic)

Module-Anweisung

Dim-Anweisung (Visual Basic)

Const-Anweisung (Visual Basic)

Enum-Anweisung (Visual Basic)

Event-Anweisung

Operator-Anweisung

Property-Anweisung

Konzepte

Strukturen und Klassen (Visual Basic)