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říkladPublic
.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 neboSet
procedury, například kód pro ověření příchozích hodnot vSet
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
postupSet
různé usnadnění přístupu. Můžete například chtít provéstSet
postupPrivate
aGet
postupPublic
.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 proceduruSet
.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
(forGet
Set
) 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.