Sdílet prostřednictvím


Automaticky implementované vlastnosti (Visual Basic)

Automaticky implementované vlastnosti umožňují rychle určit vlastnost třídy, aniž byste museli psát kód do Get a Set vlastnost. Při psaní kódu pro automaticky implementovanou vlastnost kompilátor jazyka Visual Basic automaticky vytvoří soukromé pole pro uložení proměnné vlastnosti kromě vytvoření přidružených Get a Set procedur.

S automaticky implementovanými vlastnostmi lze vlastnost, včetně výchozí hodnoty, deklarovat na jednom řádku. Následující příklad ukazuje tři deklarace vlastností.

Public Property Name As String
Public Property Owner As String = "DefaultName"
Public Property Items As New List(Of String) From {"M", "T", "W"}
Public Property ID As New Guid()

Automaticky implementovaná vlastnost je ekvivalentní vlastnosti, pro kterou je hodnota vlastnosti uložena v privátním poli. Následující příklad kódu ukazuje automaticky implementovanou vlastnost.

Property Prop2 As String = "Empty"

Následující příklad kódu ukazuje ekvivalentní kód pro předchozí automaticky implementovaný příklad vlastnosti.

Private _Prop2 As String = "Empty"
Property Prop2 As String
    Get
        Return _Prop2
    End Get
    Set(ByVal value As String)
        _Prop2 = value
    End Set
End Property

Následující kód ukazuje implementaci vlastností jen pro čtení:

Class Customer  
   Public ReadOnly Property Tags As New List(Of String)  
   Public ReadOnly Property Name As String = ""  
   Public ReadOnly Property File As String  
  
   Sub New(file As String)  
      Me.File = file  
   End Sub  
End Class  

Vlastnost můžete přiřadit pomocí inicializačních výrazů, jak je znázorněno v příkladu, nebo můžete přiřadit vlastnosti v konstruktoru obsahujícího typu. K záložním polím vlastností jen pro čtení můžete kdykoli přiřadit.

Backing Field

Když deklarujete automaticky implementovanou vlastnost, Visual Basic automaticky vytvoří skryté soukromé pole nazvané backing pole , které bude obsahovat hodnotu vlastnosti. Název backingového pole je automaticky implementovaný název vlastnosti před podtržítkem (_). Pokud například deklarujete automaticky implementovanou vlastnost s názvem ID, backing pole má název _ID. Pokud zahrnete člena třídy, který je také pojmenován _ID, vytvoříte konflikt pojmenování a Visual Basic hlásí chybu kompilátoru.

Pole backing má také následující charakteristiky:

  • Modifikátor přístupu pro backingové pole je vždy Private, i když má samotná vlastnost jinou úroveň přístupu, například Public.

  • Pokud je vlastnost označena jako Shared, backing pole je také sdíleno.

  • Atributy zadané pro vlastnost se nevztahují na záložní pole.

  • Pole backing lze získat přístup z kódu v rámci třídy a z ladicí nástroje, jako je okno Kukátko. Backing field se ale nezobrazuje v seznamu doplňování slov IntelliSense.

Inicializace automaticky implementované vlastnosti

Libovolný výraz, který lze použít k inicializaci pole, je platný pro inicializaci automaticky implementované vlastnosti. Při inicializaci automaticky implementované vlastnosti se výraz vyhodnotí a předá procedurě Set vlastnosti. Následující příklady kódu ukazují některé automaticky implementované vlastnosti, které zahrnují počáteční hodnoty.

Property FirstName As String = "James"
Property PartNo As Integer = 44302
Property Orders As New List(Of Order)(500)

Nelze inicializovat automaticky implementovanou vlastnost, která je členem Interface, nebo vlastnost, která je označena MustOverride.

Když deklarujete automaticky implementovanou vlastnost jako člena Structure, můžete inicializovat automaticky implementovanou vlastnost pouze v případě, že je označena jako Shared.

Když deklarujete automaticky implementovanou vlastnost jako matici, nelze určit explicitní hranice pole. Hodnotu však můžete zadat pomocí inicializátoru pole, jak je znázorněno v následujících příkladech.

Property Grades As Integer() = {90, 73}
Property Temperatures As Integer() = New Integer() {68, 54, 71}

Definice vlastností, které vyžadují standardní syntaxi

Automaticky implementované vlastnosti jsou pohodlné a podporují mnoho programovacích scénářů. Existují však situace, kdy nemůžete použít automaticky implementovanou vlastnost a místo toho musíte použít standardní nebo rozbalenou syntaxi vlastnosti.

Pokud chcete provést některou z následujících věcí, musíte použít rozšířenou syntaxi definice vlastností:

  • Přidejte kód do Get vlastnosti nebo Set procedury, například kód pro ověření příchozích hodnot v Set postupu. Před nastavením hodnoty vlastnosti můžete například ověřit, že řetězec představující telefonní číslo obsahuje požadovaný počet číslic.

  • Zadejte pro tento Get postup Set různé usnadnění přístupu. Můžete například chtít provést Set postup Private a Get postup Public.

  • Vytvořit vlastnosti, které jsou WriteOnly.

  • Použijte parametrizované vlastnosti (včetně Default vlastností). Chcete-li zadat parametr vlastnosti, musíte deklarovat rozbalenou vlastnost nebo zadat další parametry pro proceduru Set .

  • Umístěte atribut do backingového pole nebo změňte úroveň přístupu backingového pole.

  • Zadejte komentáře XML pro záložní pole.

Rozbalení automaticky implementované vlastnosti

Pokud potřebujete převést automaticky implementovanou vlastnost na rozbalenou vlastnost, která obsahuje nebo proceduruGet, editor kódu jazyka Visual Basic může automaticky vygenerovat Get a Set procedury a End Property příkaz pro Set vlastnost. Kód se vygeneruje, pokud umístíte kurzor na prázdný řádek za Property příkazem, zadejte G (for) nebo S (forGetSet) a stiskněte ENTER. Editor kódu jazyka Visual Basic při stisknutí klávesy ENTER na konci Property příkazu automaticky vygeneruje Get nebo Set proceduru pro vlastnosti jen pro čtení a zápis.

Viz také