Postupy: Deklarace a volání výchozí vlastnosti v jazyce Visual Basic
Výchozí vlastnost je vlastnost třídy nebo struktury, ke které má váš kód přístup bez jeho zadání. Při volání názvů kódu třídy nebo struktury, ale ne vlastnosti, a kontext umožňuje přístup k vlastnosti, Jazyk Visual Basic přeloží přístup k této třídě nebo struktuře výchozí vlastnost, pokud existuje.
Třída nebo struktura může mít maximálně jednu výchozí vlastnost. Můžete však přetížit výchozí vlastnost a mít více než jednu verzi.
Další informace najdete v tématu Výchozí.
Deklarace výchozí vlastnosti
Deklarujte vlastnost normálním způsobem. Nezadávejte ani
Shared
Private
klíčové slovo.Default
Do deklarace vlastnosti zahrňte klíčové slovo.Zadejte alespoň jeden parametr vlastnosti. Nelze definovat výchozí vlastnost, která nepřebírají alespoň jeden argument.
Default Property myProperty(ByVal index As Integer) As String
Volání výchozí vlastnosti
Deklarujte proměnnou obsahující třídy nebo typu struktury.
Dim x As New class1(3)
Název proměnné použijte samostatně ve výrazu, ve kterém byste normálně zahrnuli název vlastnosti.
MsgBox(x)
Postupujte podle názvu proměnné se seznamem argumentů v závorkách. Výchozí vlastnost musí obsahovat alespoň jeden argument.
MsgBox(x(1))
Pokud chcete načíst výchozí hodnotu vlastnosti, použijte název proměnné se seznamem argumentů ve výrazu nebo za znakem rovná se (
=
) v příkazu přiřazení.MsgBox(x(1) & x(2) & x(3))
Pokud chcete nastavit výchozí hodnotu vlastnosti, použijte název proměnné se seznamem argumentů na levé straně příkazu přiřazení.
x(1) = "Hello" x(2) = " " x(3) = "World"
Výchozí název vlastnosti můžete vždy zadat společně s názvem proměnné, stejně jako byste to udělali pro přístup k jakékoli jiné vlastnosti.
x.myProperty(1) = "Hello" x.myProperty(2) = " " x.myProperty(3) = "World"
Příklad 1
Následující příklad deklaruje výchozí vlastnost třídy.
Public Class class1
Private myStrings() As String
Sub New(ByVal size As Integer)
ReDim myStrings(size)
End Sub
Default Property myProperty(ByVal index As Integer) As String
Get
' The Get property procedure is called when the value
' of the property is retrieved.
Return myStrings(index)
End Get
Set(ByVal Value As String)
' The Set property procedure is called when the value
' of the property is modified.
' The value to be assigned is passed in the argument
' to Set.
myStrings(index) = Value
End Set
End Property
End Class
Příklad 2
Následující příklad ukazuje, jak volat výchozí vlastnost myProperty
třídy class1
. Tři příkazy přiřazení ukládají hodnoty do myProperty
a MsgBox volání načte hodnoty.
Sub Test()
Dim x As New class1(3)
x(1) = "Hello"
x(2) = " "
x(3) = "World"
MsgBox(x(1) & x(2) & x(3))
End Sub
Nejběžnějším použitím výchozí vlastnosti je Item[] vlastnost pro různé třídy kolekce.
Robustní programování
Výchozí vlastnosti můžou vést k malému snížení počtu znaků zdrojového kódu, ale jejich čtení může ztížit čtení kódu. Pokud volající kód není obeznámen s vaší třídou nebo strukturou, při vytváření odkazu na třídu nebo název struktury nemůže být jisté, zda tento odkaz přistupuje k samotné třídě nebo struktuře, nebo výchozí vlastnost. To může vést k chybám kompilátoru nebo drobným chybám logiky za běhu.
Pravděpodobnost chyb výchozí vlastnosti můžete poněkud snížit tak, že vždy pomocí příkazu Option Strict nastavíte kontrolu typů kompilátoru na On
.
Pokud máte v kódu v úmyslu použít předdefinovanou třídu nebo strukturu, musíte určit, jestli má výchozí vlastnost, a pokud ano, jaký je jeho název.
Vzhledem k těmto nevýhodám byste měli zvážit, že nedefinujete výchozí vlastnosti. Pro čitelnost kódu byste měli také zvážit vždy odkazování na všechny vlastnosti explicitně, dokonce i výchozí vlastnosti.
Viz také
- Procedury vlastnosti
- Parametry a argumenty procedury
- Příkaz Property
- Výchozí
- Rozdíly mezi vlastnostmi a proměnnými v jazyce Visual Basic
- Postupy: Vytvoření vlastnosti
- Postupy: Deklarace vlastnosti se smíšenými úrovněmi přístupu
- Postupy: Volání procedury vlastnosti
- Postupy: Vložení hodnoty do vlastnosti
- Postupy: Získání hodnoty z vlastnosti