Sdílet prostřednictvím


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í automaticky implementované vlastnosti můžete tuto proceduru Get vynechat 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í fullNameGet 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 fullNamevlastnosti :

fullName = "MyFirstName MyLastName"
MsgBox(fullName)

Viz také