Megosztás a következőn keresztül:


Tulajdonságutasítás

Deklarálja egy tulajdonság nevét, valamint a tulajdonság értékének tárolására és lekérésére használt tulajdonságeljárásokat.

Syntax

[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ] [ Iterator ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]
    [ <attributelist> ] [ accessmodifier ] Get
        [ statements ]
    End Get
    [ <attributelist> ] [ accessmodifier ] Set ( ByVal value As returntype [, parameterlist ] )
        [ statements ]
    End Set
End Property
- or -
[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]

Részek

  • attributelist

    Opcionális. A tulajdonságra vagy GetSet eljárásra vonatkozó attribútumok listája. Lásd: Attribútumlista.

  • Default

    Opcionális. Megadja, hogy ez a tulajdonság annak az osztálynak vagy struktúranak az alapértelmezett tulajdonsága, amelyen definiálva van. Az alapértelmezett tulajdonságoknak el kell fogadniuk a paramétereket, és a tulajdonságnév megadása nélkül is beállíthatók és lekérhetők. Ha a tulajdonságot Defaultúgy deklarálja, hogy nem használható Private a tulajdonságon vagy annak egyik tulajdonságeljárásán. Példák és részletes útmutatás : Útmutató: Alapértelmezett tulajdonság deklarálása és meghívása a Visual Basicben.

  • accessmodifier

    Az utasításon Property és legfeljebb az Get egyik utasításon Set nem kötelező. A következők egyike lehet:

    Lásd a Visual Basic hozzáférési szintjeinek megtekintését.

  • propertymodifiers

    Opcionális. A következők egyike lehet:

  • Shared

    Opcionális. Lásd: Megosztott.

  • Shadows

    Opcionális. Lásd: Árnyékok.

  • ReadOnly

    Opcionális. Lásd: ReadOnly.

  • WriteOnly

    Opcionális. Lásd: WriteOnly.

  • Iterator

    Opcionális. Lásd : Iterator.

  • name

    Szükséges. A tulajdonság neve. Lásd: Deklarált elemnevek.

  • parameterlist

    Opcionális. A tulajdonság paramétereit képviselő helyi változónevek és az Set eljárás lehetséges további paramétereinek listája. A paraméteres tulajdonságokat gyakran használják olyan indexelők vagy alapértelmezett tulajdonságok létrehozására, amelyek lehetővé teszik a gyűjteményszerű hozzáférést. Lásd: Paraméterlista és útmutató: Alapértelmezett tulajdonság deklarálása és meghívása a Visual Basicben.

  • returntype

    Ha igen, akkor Option Strict kötelező Onmegadni. A tulajdonság által visszaadott érték adattípusa.

  • Implements

    Opcionális. Azt jelzi, hogy ez a tulajdonság egy vagy több tulajdonságot implementál, amelyek mindegyike a tulajdonság osztályát vagy szerkezetét tartalmazó felületében van definiálva. Lásd: Implements Utasítás.

  • implementslist

    Implements Ha meg van adva, kötelező megadni. A megvalósítandó tulajdonságok listája.

    implementedproperty [ , implementedproperty ... ]

    Mindegyik implementedproperty a következő szintaxist és részeket tartalmazza:

    interface.definedname

    Rész Leírás
    interface Szükséges. A tulajdonság által megvalósított felület neve, amely osztályt vagy struktúrát tartalmaz.
    definedname Szükséges. Az a név, amellyel a tulajdonság definiálva van.interface
  • Get

    Opcionális. Kötelező, ha a tulajdonság meg van jelölve ReadOnly. Elindít egy Get tulajdonság eljárást, amely a tulajdonság értékének visszaadására szolgál. Az Get utasítás nem használható automatikusan implementált tulajdonságokkal.

  • statements

    Opcionális. Az eljáráson belül GetSet futtatandó utasítások blokkja.

  • End Get

    Leállítja a tulajdonságeljárást Get .

  • Set

    Opcionális. Kötelező, ha a tulajdonság meg van jelölve WriteOnly. Elindít egy Set tulajdonság eljárást, amely a tulajdonság értékének tárolására szolgál. Az Set utasítás nem használható automatikusan implementált tulajdonságokkal.

  • End Set

    Leállítja a tulajdonságeljárást Set .

  • End Property

    Leállítja a tulajdonság definícióját.

Megjegyzések

A Property nyilatkozat bemutatja egy tulajdonság deklarációját. Egy tulajdonság rendelkezhet eljárással Get (csak olvasható), eljárással Set (írási és írási) vagy mindkettővel (írásvédett). Az automatikusan implementált tulajdonság használatakor kihagyhatja az eljárást és Get az Set eljárást. További információ: Automatikusan implementált tulajdonságok.

Csak osztályszinten használható Property . Ez azt jelenti, hogy egy tulajdonság deklarációs környezetének osztálynak, struktúrának, modulnak vagy interfésznek kell lennie, és nem lehet forrásfájl, névtér, eljárás vagy blokk. További információ: Deklarációs környezetek és alapértelmezett hozzáférési szintek.

Alapértelmezés szerint a tulajdonságok nyilvános hozzáférést használnak. A tulajdonság hozzáférési szintjét egy hozzáférési módosítóval módosíthatja az Property utasításban, és igény szerint módosíthatja az egyik tulajdonságeljárását egy szigorúbb hozzáférési szintre. A vegyes hozzáférési szintek részletes példáiért lásd: Hogyan: Tulajdonság deklarálása vegyes hozzáférési szintekkel.

A Visual Basic átad egy paramétert az eljárásnak a Set tulajdonság-hozzárendelések során. Ha nem ad meg paramétert, Setaz integrált fejlesztési környezet (IDE) egy implicit paramétert valuehasznál. Ez a paraméter tartalmazza a tulajdonsághoz rendelendő értéket. Ezt az értéket általában egy helyi magánváltozóban tárolja, és az eljárás meghívásakor Get adja vissza.

Szabályok

  • Vegyes hozzáférési szintek. Ha írási-olvasási tulajdonságot határoz meg, megadhat egy másik hozzáférési szintet az eljáráshoz vagy az GetSet eljáráshoz, de mindkettőhöz nem. Ha ezt teszi, az eljárás hozzáférési szintjének szigorúbbnak kell lennie, mint a tulajdonság hozzáférési szintje. Ha például a tulajdonság deklarálva Friendvan, deklarálhatja az Set eljárást Private, de nem Public.

    Ha egy vagy több tulajdonságot ReadOnly határoz meg, az egyetlen tulajdonság eljárása (WriteOnlyvagy Get) az összes tulajdonságot jelöli.Set Ilyen eljáráshoz nem deklarálhat másik hozzáférési szintet, mert ez két hozzáférési szintet állítana be a tulajdonsághoz.

  • Visszatérési típus. Az Property utasítás deklarálhatja a visszaadott érték adattípusát. Bármilyen adattípust vagy enumerálás, struktúra, osztály vagy felület nevét megadhatja.

    Ha nem adja meg returntype, a tulajdonság visszaadja Object.

  • Végrehajtás. Ha ez a tulajdonság a kulcsszót Implements használja, az azt tartalmazó osztálynak vagy struktúrának közvetlenül az utasítást követő Implements utasítással kell rendelkeznie ClassStructure. Az Implements utasításnak tartalmaznia kell a megadott interfészeket implementslist. Az interfész által definiált Property (in definedname) névnek azonban nem kell megegyeznie a tulajdonság nevével (in name).

Működés

  • Visszatérés egy tulajdonságeljárásból. Amikor az Get eljárás Set visszatér a hívó kódhoz, a végrehajtás a meghívott utasítást követő utasítással folytatódik.

    Az Exit Property és Return az utasítások azonnali kilépést okoznak egy tulajdonságeljárásból. Tetszőleges számú Exit Property és Return utasítás jelenhet meg az eljárás bármely pontján, és keverheti és Exit Property megadhatja Return az utasításokat.

  • Visszaadott érték. Ha egy értéket egy eljárásból Get szeretne visszaadni, hozzárendelheti az értéket a tulajdonság nevéhez, vagy belefoglalhatja egy Return utasításba. Az alábbi példa a visszatérési értéket a tulajdonság nevéhez quoteForTheDay rendeli, majd az utasítást használja a Exit Property visszatéréshez.

    Private quoteValue As String = "No quote assigned yet."
    
    ReadOnly Property QuoteForTheDay() As String
        Get
            QuoteForTheDay = quoteValue
            Exit Property
        End Get
    End Property
    

    Ha érték Exit Propertyhozzárendelése nélkül használjaname, az eljárás a Get tulajdonság adattípusának alapértelmezett értékét adja vissza.

    Az Return utasítás ugyanakkor hozzárendeli az eljárás visszatérési Get értékét, és kilép az eljárásból. Az alábbi példa ezt mutatja be.

    Private quoteValue As String = "No quote assigned yet."
    
    ReadOnly Property QuoteForTheDay() As String
        Get
            Return quoteValue
        End Get
    End Property
    

Példa

Az alábbi példa egy tulajdonságot deklarál egy osztályban.

Class Class1
    ' Define a local variable to store the property value.
    Private propertyValue As String
    ' Define the property.
    Public Property Prop1() As String
        Get
            ' The Get property procedure is called when the value
            ' of a property is retrieved.
            Return propertyValue
        End Get
        Set(ByVal value As String)
            ' The Set property procedure is called when the value
            ' of a property is modified.  The value to be assigned
            ' is passed in the argument to Set.
            propertyValue = value
        End Set
    End Property
End Class

Paraméteres tulajdonságok

Az alábbi példa bemutatja, hogyan hozhat létre paraméteres tulajdonságot, más néven indexelőt, amely tömbszerű hozzáférést tesz lehetővé egy gyűjteményhez:

Class SampleCollection
    ' Define a local collection to store strings.
    Private items As New List(Of String)
    
    ' Define a parameterized property (indexer) for the collection.
    Default Public Property Item(ByVal index As Integer) As String
        Get
            ' Return the item at the specified index.
            If index >= 0 AndAlso index < items.Count Then
                Return items(index)
            Else
                Return Nothing
            End If
        End Get
        Set(ByVal value As String)
            ' Set the item at the specified index.
            If index >= 0 AndAlso index < items.Count Then
                items(index) = value
            ElseIf index = items.Count Then
                ' Allow adding new items at the end.
                items.Add(value)
            End If
        End Set
    End Property
    
    ' Add a Count property for convenience.
    Public ReadOnly Property Count As Integer
        Get
            Return items.Count
        End Get
    End Property
    
    ' Add method to add items.
    Public Sub Add(ByVal item As String)
        items.Add(item)
    End Sub
End Class

A tulajdonsághasználatra vonatkozó átfogó példákért, beleértve az automatikus megvalósítást, a vegyes hozzáférési szinteket és az érvényesítési forgatókönyveket, tekintse meg a tulajdonságeljárásokat.

Lásd még

Tulajdonságtípusok és szolgáltatások

Speciális tulajdonságforgatókönyvek