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 , , Enum nebo Event příkazy deklarující datové členy struktury. |
methodmemberdeclarations |
Nepovinné. Nulové nebo více deklarací Function , , Operator Property nebo 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ýtProtected
neboProtected 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 Public
Friend
Private
č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 Structure
s, naleznete v tématu Proměnná struktury.