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. Podkladovým polím vlastností jen pro čtení můžete přiřadit kdykoli.
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 podpůrného pole je automaticky implementovaný název vlastnosti, kterému předchází podtržítko (_). 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 zálohování 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, je podpůrné pole také sdíleno.Atributy zadané pro vlastnost se nevztahují na záložní pole.
Podpůrné pole je přístupné z kódu uvnitř třídy a z ladicích nástrojů, jako je okno Watch. Podkladové pole se však 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 různé přístupové úrovně pro proceduru
GetaSet. 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 podpůrného pole nebo změňte úroveň přístupu k podpůrnému poli.
Zadejte komentáře XML pro záložní pole.
Rozšíření automaticky implementované vlastnosti
Pokud potřebujete převést automaticky implementovanou vlastnost na rozbalenou vlastnost, která obsahuje Get nebo Set proceduru, editor kódu jazyka Visual Basic může automaticky vygenerovat Get a Set procedury a příkaz End Property pro vlastnost. Kód se vygeneruje, pokud umístíte kurzor na prázdný řádek za příkazem Property, zadejte G (pro Get) nebo S (pro Set) 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.