Structure – příkaz

Deklaruje název struktury a zavádí definici proměnných, vlastností, událostí a procedur, které struktura zahrnuje.

Syntaxe

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

Součástky

Pojem definice
attributelist Nepovinné. Viz seznam atributů.
accessmodifier Nepovinné. Může to být jedna z následujících možností:

- Public
- Protected
- Friend
- Private
- Protected Friend
- Private Protected

Viz úrovně Accessu v jazyce Visual Basic.
Shadows Nepovinné. Podívejte se na stíny.
Partial Nepovinné. Označuje částečnou definici struktury. Viz část.
name Povinný: Název této struktury Viz Deklarované názvy elementů.
Of Nepovinné. Určuje, že se jedná o obecnou strukturu.
typelist Vyžaduje se, pokud použijete klíčové slovo Of . Seznam parametrů typu pro tuto strukturu Viz seznam typů.
Implements Nepovinné. Označuje, že tato struktura implementuje členy jednoho nebo více rozhraní. Viz Implements – příkaz.
interfacenames Vyžaduje se, pokud použijete Implements příkaz. Názvy rozhraní, která tato struktura implementuje.
datamemberdeclarations Povinný: Nula nebo více Const, Dim, , Enumnebo Event příkazy deklarující datové členy struktury.
methodmemberdeclarations Nepovinné. Nulové nebo více deklarací Function, , OperatorPropertynebo Sub procedur, které slouží jako členy metody struktury.
End Structure Povinný: Ukončí definici Structure .

Poznámky

Příkaz Structure definuje složený typ hodnoty, který můžete přizpůsobit. Struktura je generalizace uživatelem definovaného typu (UDT) předchozích verzí jazyka Visual Basic. Další informace naleznete v tématu Struktury.

Struktury podporují mnoho stejných funkcí jako třídy. Například struktury mohou mít vlastnosti a procedury, mohou implementovat rozhraní a mohou mít parametrizované konstruktory. Mezi strukturami a třídami však existují značné rozdíly v oblastech, jako je dědičnost, deklarace a použití. Třídy jsou také odkazové typy a struktury jsou typy hodnot. Další informace naleznete v tématu Struktury a třídy.

Můžete použít Structure pouze na úrovni oboru názvů nebo modulu. To znamená, že kontext deklarace pro strukturu musí být zdrojový soubor, obor názvů, třída, struktura, modul nebo rozhraní a nesmí být procedurou nebo blokem. Další informace naleznete v tématu Kontexty deklarace a výchozí úrovně přístupu.

Struktury ve výchozím nastavení mají přístup spřáteli . Jejich úrovně přístupu můžete upravit pomocí modifikátorů přístupu. Další informace naleznete v tématu Úrovně přístupu v jazyce Visual Basic.

Pravidla

  • Vnoření. Jednu strukturu můžete definovat v rámci jiné. Vnější struktura se nazývá obsahující struktura a vnitřní struktura se nazývá vnořená struktura. Nelze však získat přístup k členům vnořené struktury prostřednictvím struktury obsahující. Místo toho musíte deklarovat proměnnou datového typu vnořené struktury.

  • Deklarace člena. Musíte deklarovat každý člen struktury. Člen struktury nemůže být chráněn nebo Protected Friend protože nic nemůže dědit ze struktury. Samotná struktura však může být Protected nebo Protected Friend.

    Můžete deklarovat nulové nebo více nesdílených proměnných nebo nesdílené, nesdílené události ve struktuře. Nemůžete mít pouze konstanty, vlastnosti a procedury, a to ani v případě, že některé z nich nejsou sdíleny.

  • Inicializace. V rámci deklarace nelze inicializovat hodnotu žádného nesdíleného datového člena struktury. Tento datový člen je nutné inicializovat pomocí parametrizovaného konstruktoru ve struktuře nebo přiřadit hodnotu členu po vytvoření instance struktury.

  • Dědičnosti. Struktura nemůže dědit z jiného typu než ValueType, ze kterého dědí všechny struktury. Konkrétně jedna struktura nemůže dědit z jiné.

    Příkaz Inherits nelze použít v definici struktury, a to ani k určení ValueType.

  • Provádění. Pokud struktura používá Implements Statement, musíte implementovat každý člen definovaný každým rozhraním, které zadáte v interfacenames.

  • Výchozí vlastnost. Struktura může jako výchozí vlastnost zadat maximálně jednu vlastnost pomocí modifikátoru Default . Další informace najdete v tématu Výchozí.

Chování

  • Úroveň přístupu V rámci struktury můžete deklarovat každý člen s vlastní úrovní přístupu. Všichni členové struktury ve výchozím nastavení mají veřejný přístup. Všimněte si, že pokud samotná struktura má omezenější úroveň přístupu, automaticky omezí přístup ke svým členům, i když upravíte jejich úrovně přístupu pomocí modifikátorů přístupu.

  • Rozsah. Struktura je v rozsahu v celém oboru názvů, třídy, struktury nebo modulu.

    Rozsah každého člena struktury je celá struktura.

  • Životnost: Struktura sama o sobě nemá životnost. Každá instance této struktury má životnost nezávislou na všech ostatních instancích.

    Životnost instance začíná, když je vytvořena klauzulí New Operator . Končí, když skončí životnost proměnné, která ji uchovává.

    Životnost instance struktury nelze prodloužit. Modul poskytuje aproximaci funkce statické struktury. Další informace najdete v tématu Příkaz modulu.

    Členové struktury mají životnost podle toho, jak a kde se deklarují. Další informace naleznete v části Životnost v příkazu třídy.

  • Kvalifikace. Kód mimo strukturu musí kvalifikovat název člena s názvem této struktury.

    Pokud kód uvnitř vnořené struktury vytvoří nekvalifikovaný odkaz na programovací prvek, Visual Basic vyhledá prvek nejprve ve vnořené struktuře, pak v jeho obsahující struktuře a tak dále na vnější prvek obsahující prvek. Další informace naleznete v tématu Odkazy na deklarované elementy.

  • Spotřeba paměti. Stejně jako u všech složených datových typů nelze bezpečně vypočítat celkovou spotřebu paměti struktury tak, že sečtou nominální přidělení úložiště jejích členů. Navíc nemůžete bezpečně předpokládat, že pořadí úložiště v paměti je stejné jako pořadí deklarací. Pokud potřebujete řídit rozložení úložiště struktury, můžete na příkaz použít StructLayoutAttribute atribut Structure .

Příklad

Následující příklad používá příkaz Structure k definování sady souvisejících dat pro zaměstnance. Zobrazuje použití a PublicFriendPrivate členy, aby odrážely citlivost datových položek. Zobrazuje také proceduru, vlastnost a členy událostí.

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

Další informace o tom, jak používat Structures, naleznete v tématu Proměnná struktury.

Viz také