Structure-Anweisung

Deklariert den Namen einer Struktur und führt die Definitionen der Variablen, Eigenschaften, Ereignisse und Prozeduren ein, die die Struktur enthält.

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

Teile

Begriff

Definition

attributelist

Optional.Siehe Attributliste.

accessmodifier

Optional.Einer der folgenden Werte ist möglich:

Weitere Informationen finden Sie unter Zugriffsebenen in Visual Basic.

Shadows

Optional.Siehe Shadows.

Partial

Optional.Gibt eine partielle Definition der Struktur an.Weitere Informationen finden Sie unter Partial (Visual Basic).

name

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

Of

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

Optional.Gibt an, dass diese Struktur die Member einer oder mehrerer Schnittstellen implementiert.Weitere Informationen finden Sie unter Implements-Anweisung.

interfacenames

Erforderlich, wenn Sie die Implements-Anweisung verwenden.Die Namen der von dieser Struktur implementierten Schnittstellen.

datamemberdeclarations

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

methodmemberdeclarations

Optional.0 (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 Features, 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, Deklariationen 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 müssen in einer Struktur mindestens eine nicht freigegebene Variable oder mindestens ein weder freigegebenes noch benutzerdefiniertes Ereignis 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 in 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 Default (Visual Basic)-Modifizierer.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.

  • Gültigkeitsbereich. 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 eineOperator New (Visual Basic)-Klausel.Sie endet, wenn die Lebensdauer der Variablen endet, die sie enthält.

    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, sucht Visual Basic das Element zunächst in der geschachtelten Struktur, 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 durch Addition der nominalen Speicherbelegungen ihrer Member nicht zuverlässig berechnen.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 widerzuspiegeln.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)