Sdílet prostřednictvím


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

  1. Deklarujte vlastnost normálním způsobem. Nezadávejte ani SharedPrivate klíčové slovo.

  2. Default Do deklarace vlastnosti zahrňte klíčové slovo.

  3. 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

  1. Deklarujte proměnnou obsahující třídy nebo typu struktury.

    Dim x As New class1(3)
    
  2. Název proměnné použijte samostatně ve výrazu, ve kterém byste normálně zahrnuli název vlastnosti.

    MsgBox(x)
    
  3. Postupujte podle názvu proměnné se seznamem argumentů v závorkách. Výchozí vlastnost musí obsahovat alespoň jeden argument.

    MsgBox(x(1))
    
  4. 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))
    
  5. 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"
    
  6. 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 myPropertya 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é