Automatikusan implementált tulajdonságok (Visual Basic)
Az automatikusan implementált tulajdonságok lehetővé teszik egy osztály tulajdonságának gyors megadását anélkül, hogy kódot kellene írnia a tulajdonsághoz Get
Set
. Amikor kódot ír egy automatikusan implementált tulajdonsághoz, a Visual Basic fordító automatikusan létrehoz egy privát mezőt a tulajdonságváltozó tárolásához a társított Get
és Set
eljárások létrehozása mellett.
Az automatikusan implementált tulajdonságok esetén egy tulajdonság, beleértve az alapértelmezett értéket is, egyetlen sorban deklarálható. Az alábbi példa három tulajdonságdeklarációt mutat be.
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()
Az automatikusan implementált tulajdonság egyenértékű azzal a tulajdonságsal, amelynek tulajdonságértékét egy privát mezőben tárolja a rendszer. Az alábbi példakód egy automatikusan implementált tulajdonságot mutat be.
Property Prop2 As String = "Empty"
Az alábbi példakód az előző automatikusan végrehajtott tulajdonság példájának megfelelő kódot mutatja be.
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
Az alábbi kód az olvasható tulajdonságok implementálását mutatja be:
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
A tulajdonsághoz a példában látható inicializálási kifejezésekkel rendelhet hozzá, vagy hozzárendelheti a tulajdonságokhoz a típus konstruktorában. Bármikor hozzárendelheti az olvasható tulajdonságok háttérmezőihez.
Háttérmező
Automatikusan implementált tulajdonság deklarálásakor a Visual Basic automatikusan létrehoz egy rejtett, háttérmezőnek nevezett privát mezőt, amely tartalmazza a tulajdonság értékét. A háttérmező neve az automatikusan végrehajtott tulajdonságnév, amelyet aláhúzásjel (_) előz meg. Ha például egy automatikusan implementált tulajdonságot ID
deklarál, a háttérmező neve el lesz nevezve _ID
. Ha az osztály egyik tagját is elnevezi _ID
, elnevezési ütközést okoz, és a Visual Basic fordítási hibát jelez.
A háttérmező a következő jellemzőkkel is rendelkezik:
A háttérmező hozzáférési módosítója mindig
Private
az , még akkor is, ha maga a tulajdonság más hozzáférési szinttel rendelkezik, példáulPublic
.Ha a tulajdonság meg van jelölve,
Shared
a háttérmező is meg van osztva.A tulajdonsághoz megadott attribútumok nem vonatkoznak a háttérmezőre.
A háttérmező az osztályon belüli kódból és a hibakeresési eszközökből, például a Figyelő ablakból érhető el. A háttérmező azonban nem jelenik meg az IntelliSense szókiegészítési listájában.
Automatikusan implementált tulajdonság inicializálása
A mezők inicializálására használható kifejezések érvényesek az automatikusan implementált tulajdonság inicializálására. Az automatikusan implementált tulajdonság inicializálásakor a rendszer kiértékeli és átadja a kifejezést a Set
tulajdonság eljárásának. Az alábbi példakód néhány automatikusan implementált tulajdonságot mutat be, amelyek kezdeti értékeket tartalmaznak.
Property FirstName As String = "James"
Property PartNo As Integer = 44302
Property Orders As New List(Of Order)(500)
Nem inicializálhat olyan automatikusan implementált tulajdonságot, amely egy Interface
, vagy egy megjelölt MustOverride
tulajdonság tagja.
Ha egy automatikusan implementált tulajdonságot egy tagként Structure
deklarál, csak akkor inicializálhatja az automatikusan implementált tulajdonságot, ha a tulajdonságot a rendszer a következőképpen jelöli meg Shared
.
Ha tömbként deklarál egy automatikusan implementált tulajdonságot, nem adhat meg explicit tömbkorlátokat. Az értékeket azonban tömb inicializálóval is megadhatja, ahogyan az alábbi példákban is látható.
Property Grades As Integer() = {90, 73}
Property Temperatures As Integer() = New Integer() {68, 54, 71}
Standard szintaxist igénylő tulajdonságdefiníciók
Az automatikusan implementált tulajdonságok kényelmesek, és számos programozási forgatókönyvet támogatnak. Vannak azonban olyan helyzetek, amikor nem használhat automatikusan implementált tulajdonságot, és ehelyett szabványos vagy kibontott tulajdonságszintaxist kell használnia.
Ha az alábbiak valamelyikét szeretné elvégezni, bővített tulajdonságdefiníciós szintaxist kell használnia:
Adjon hozzá kódot egy
Get
tulajdonsághoz vagySet
eljáráshoz, például kódot a bejövő értékek ellenőrzéséhez azSet
eljárásban. Előfordulhat például, hogy a tulajdonságérték beállítása előtt ellenőrizni szeretné, hogy egy telefonszámot jelölő sztring tartalmazza-e a szükséges számokat.Adjon meg különböző kisegítő lehetőségeket az eljáráshoz és
Set
azGet
eljáráshoz. Előfordulhat például, hogy az eljárást és azSet
Get
eljárástPrivate
Public
szeretné elvégezni.Hozzon létre tulajdonságokat.
WriteOnly
Használjon paraméteres tulajdonságokat (a tulajdonságokat is beleértve
Default
). A tulajdonság paraméterének megadásához vagy az eljárás további paramétereinek megadásához deklarálnia kell egy kibontott tulajdonságotSet
.Helyezzen egy attribútumot a háttérmezőre, vagy módosítsa a háttérmező hozzáférési szintjét.
Adjon meg XML-megjegyzéseket a háttérmezőhöz.
Automatikusan implementált tulajdonság kibontása
Ha egy automatikusan implementált tulajdonságot kibontott tulajdonsággá kell konvertálnia, amely egy vagy több Get
eljárást tartalmaz, a Visual Basic Code Editor automatikusan létrehozhatja a Get
tulajdonság eljárásait és End Property
Set
utasításátSet
. A kód akkor jön létre, ha a kurzort az utasítást követő Property
üres sorba helyezi, írja be G
a (for Get
) vagy egy S
(for Set
) kifejezést, és nyomja le az ENTER billentyűt. A Visual Basic Code Editor automatikusan létrehozza az Get
Set
írásvédett és írásvédett tulajdonságokat, amikor az ENTER billentyűt lenyomja egy Property
utasítás végén.