Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
Podpůrné pole
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
Getvlastnosti neboSetprocedury, například kód pro ověření příchozích hodnot vSetpostupu. 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
GetpostupSetrůzné usnadnění přístupu. Můžete například chtít provéstSetpostupPrivateaGetpostupPublic.Vytvořit vlastnosti, které jsou
WriteOnly.Použijte parametrizované vlastnosti (včetně
Defaultvlastností). 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 Set a Get procedury a Set příkaz pro End Property vlastnost. Kód se vygeneruje, pokud umístíte kurzor na prázdný řádek za Property příkazem, zadejte G (for) nebo Get (forSSet) a stiskněte ENTER. Editor kódu jazyka Visual Basic při stisknutí klávesy ENTER na konci Get příkazu automaticky vygeneruje Set nebo Property proceduru pro vlastnosti jen pro čtení a zápis.