Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 GetSet . 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 megvalósított 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ő
Ha automatikusan implementált tulajdonságot deklarál, 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 implementált tulajdonságnév, amelyet aláhúzás (_) előz meg. Ha például egy automatikusan implementált tulajdonságot IDdeklará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
Privateaz , 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,
Shareda 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 a kifejezést, és átadja a Set tulajdonság eljárásának. Az alábbi példakódok a kezdeti értékeket tartalmazó, automatikusan implementált tulajdonságokat mutatják be.
Property FirstName As String = "James"
Property PartNo As Integer = 44302
Property Orders As New List(Of Order)(500)
Nem inicializálhat automatikusan implementált tulajdonságot, amely egy Interface, vagy egy megjelölt MustOverridetulajdonság tagja.
Ha egy automatikusan implementált tulajdonságot deklarál egy Structuretagként, csak akkor inicializálhatja az automatikusan implementált tulajdonságot, ha az a következőképpen van megjelölve Shared.
Ha egy automatikusan implementált tulajdonságot tömbként deklarál, 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 lehet automatikusan implementált tulajdonságot használni, és ehelyett szabványos vagy kibontott tulajdonságszintaxisokat 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
Gettulajdonsághoz vagySeteljáráshoz, például kódot a bejövő értékek ellenőrzéséhez azSeteljá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
GetazSeteljáráshoz. Előfordulhat például, hogy az eljárást és azSetPrivateeljárástGetPublicszeretné elvégezni.Hozzon létre tulajdonságokat.
WriteOnlyHaszná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 egy olyan 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 Set tulajdonság eljárásait és GetSet utasítását.End Property 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 GetSet írásvédett és írásvédett tulajdonságokat, amikor az ENTER billentyűt lenyomja egy Property utasítás végén.