Procedury vlastnosti (Visual Basic)
Procedura vlastnosti je řada příkazů jazyka Visual Basic, které manipulují s vlastní vlastností v modulu, třídě nebo struktuře. Procedury vlastností se také označují jako přístupové objekty vlastností.
Visual Basic poskytuje následující procedury vlastností:
- Procedura
Get
vrátí hodnotu vlastnosti. Volá se při přístupu k vlastnosti ve výrazu. - Procedura
Set
nastaví vlastnost na hodnotu, včetně odkazu na objekt. Volá se při přiřazování hodnoty vlastnosti.
Procedury vlastností obvykle definujete ve dvojicích pomocí příkazů a Set
příkazů, ale můžete definovat buď samostatně, pokud je vlastnost jen pro čtení (Get Statement) nebo jen pro zápis (Set Statement).Get
Při použití automatizovaně implementované vlastnosti můžete vynechat Get
tuto proceduru Set
. Další informace naleznete v tématu Automaticky implementované vlastnosti.
Vlastnosti můžete definovat ve třídách, strukturách a modulech. Vlastnosti jsou Public
ve výchozím nastavení, což znamená, že je můžete volat odkudkoliv v aplikaci, která má přístup ke kontejneru vlastnosti.
Porovnání vlastností a proměnných naleznete v tématu Rozdíly mezi vlastnostmi a proměnnými v jazyce Visual Basic.
Syntaxe deklarace
Samotná vlastnost je definována blokem kódu uzavřeným v příkazu Property a příkazem End Property
. Uvnitř tohoto bloku se každá procedura vlastnosti zobrazí jako vnitřní blok uzavřený v prohlášení deklarace (Get
nebo Set
) a odpovídající End
deklarace.
Syntaxe pro deklarování vlastnosti a jejích procedur je následující:
[Default] [Modifiers] Property PropertyName[(ParameterList)] [As DataType]
[AccessLevel] Get
' Statements of the Get procedure.
' The following statement returns an expression as the property's value.
Return Expression
End Get
[AccessLevel] Set[(ByVal NewValue As DataType)]
' Statements of the Set procedure.
' The following statement assigns newvalue as the property's value.
LValue = NewValue
End Set
End Property
' - or -
[Default] [Modifiers] Property PropertyName [(ParameterList)] [As DataType]
Může Modifiers
určit úroveň přístupu a informace týkající se přetížení, přepsání, sdílení a stínování a také to, zda je vlastnost určena jen pro čtení nebo jen pro zápis. Get
Na AccessLevel
úrovni nebo Set
postupu může být libovolná úroveň, která je více omezující než úroveň přístupu určená pro samotnou vlastnost. Další informace naleznete v tématu Příkaz vlastnosti.
Datový typ
Datový typ vlastnosti a úroveň přístupu objektu Property
zabezpečení jsou definovány v příkazu, ne v procedurách vlastností. Vlastnost může mít pouze jeden datový typ. Například nelze definovat vlastnost pro uložení Decimal
hodnoty, ale načíst Double
hodnotu.
Úroveň přístupu
Můžete však definovat hlavní úroveň přístupu pro vlastnost a dále omezit úroveň přístupu v jednom z jeho procedur vlastností. Můžete například definovat Public
vlastnost a pak definovat proceduru Private Set
. Postup Get
zůstává Public
. Úroveň přístupu můžete změnit pouze v jednom z postupů vlastnosti a můžete ji nastavit pouze restriktivnější než úroveň přístupu objektu zabezpečení. Další informace naleznete v tématu Postupy: Deklarace vlastnosti se smíšenými úrovněmi přístupu.
Deklarace parametru
Každý parametr deklarujete stejným způsobem jako u dílčích procedur s tím rozdílem, že předávací mechanismus musí být ByVal
.
Syntaxe každého parametru v seznamu parametrů je následující:
[Optional] ByVal [ParamArray] parametername As datatype
Pokud je parametr nepovinný, musíte jako součást deklarace zadat také výchozí hodnotu. Syntaxe pro zadání výchozí hodnoty je následující:
Optional ByVal parametername As datatype = defaultvalue
Hodnota vlastnosti
Get
V postupu je vrácená hodnota do volajícího výrazu jako hodnota vlastnosti.
Set
V rámci procedury se nová hodnota vlastnosti předá parametru Set
příkazu. Pokud explicitně deklarujete parametr, musíte ho deklarovat se stejným datovým typem jako vlastnost. Pokud deklarujete parametr, kompilátor použije implicitní parametr Value
k reprezentaci nové hodnoty, která má být přiřazena vlastnosti.
Syntaxe volání
Proceduru vlastnosti vyvoláte implicitně tak, že na tuto vlastnost odkazujete. Název vlastnosti použijete stejným způsobem jako název proměnné, s tím rozdílem, že musíte zadat hodnoty pro všechny argumenty, které nejsou volitelné, a musíte uzavřít seznam argumentů do závorek. Pokud nejsou zadány žádné argumenty, můžete volitelně vynechat závorky.
Syntaxe implicitního volání Set
procedury je následující:
propertyname[(argumentlist)] = expression
Syntaxe implicitního volání Get
procedury je následující:
lvalue = propertyname[(argumentlist)]
Do While (propertyname[(argumentlist)] > expression)
Obrázek deklarace a volání
Následující vlastnost ukládá celé jméno jako dvě základní názvy, křestní jméno a příjmení. Při čtení fullName
Get
volajícího kódu se procedura zkombinuje se dvěma základními názvy a vrátí celý název. Když volající kód přiřadí nový úplný název, Set
pokusí se ho rozdělit do dvou základních názvů. Pokud prostor nenajde, uloží ho jako křestní jméno.
Dim firstName, lastName As String
Property fullName() As String
Get
If lastName = "" Then
Return firstName
Else
Return firstName & " " & lastName
End If
End Get
Set(ByVal Value As String)
Dim space As Integer = Value.IndexOf(" ")
If space < 0 Then
firstName = Value
lastName = ""
Else
firstName = Value.Substring(0, space)
lastName = Value.Substring(space + 1)
End If
End Set
End Property
Následující příklad ukazuje typické volání procedur fullName
vlastnosti :
fullName = "MyFirstName MyLastName"
MsgBox(fullName)
Viz také
- Procedury
- Procedury funkce
- Procedury operátoru
- Parametry a argumenty procedury
- Rozdíly mezi vlastnostmi a proměnnými v jazyce Visual Basic
- Postupy: Vytvoření vlastnosti
- Postupy: Volání procedury vlastnosti
- Postupy: Deklarace a volání výchozí vlastnosti v jazyce Visual Basic
- Postupy: Vložení hodnoty do vlastnosti
- Postupy: Získání hodnoty z vlastnosti