Condividi tramite


Istruzione Property

Aggiornamento: novembre 2007

Consente di dichiarare il nome di una proprietà e le routine delle proprietà utilizzate per memorizzare e recuperare il valore della proprietà.

[ <attributelist> ] [ Default ] [ accessmodifier ] 
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ] 
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

Parti

  • attributelist
    Facoltativo. Elenco di attributi applicabili a questa proprietà o alla routine Get o Set. Vedere Elenco degli attributi.

  • Default
    Facoltativo. Specifica che la proprietà è quella predefinita per la classe o la struttura su cui è definita. Nelle proprietà predefinite è obbligatoria l'accettazione di parametri ed è possibile impostare e recuperare tali proprietà senza specificarne il nome. Se la proprietà è dichiarata predefinita Default, non è possibile utilizzare l'oggetto Private sulla proprietà né sulle sue routine.

  • accessmodifier
    Utilizzo facoltativo sull'istruzione Property e su solo una delle istruzioni Get e Set. ad esempio uno dei seguenti:

    Vedere Livelli di accesso in Visual Basic.

  • propertymodifiers
    Facoltativo. ad esempio uno dei seguenti:

  • Shared
    Facoltativo. Vedere Shared (Visual Basic).

  • Shadows
    Facoltativo. Vedere Shadows.

  • ReadOnly
    Facoltativo. Vedere ReadOnly (Visual Basic).

  • WriteOnly
    Facoltativo. Vedere WriteOnly.

  • name
    Obbligatorio. Nome della proprietà. Vedere Nomi di elementi dichiarati.

  • parameterlist
    Facoltativo. Elenco di nomi di variabili locali che rappresentano i parametri della proprietà e gli eventuali parametri aggiuntivi della routine Set. Vedere Elenco parametri.

  • returntype
    Obbligatorio se OptionStrict è On. Tipo di dati del valore restituito dalla proprietà.

  • Implements
    Facoltativo. Indica che la proprietà ne implementa un'altra o più, ciascuna delle quali viene definita in un'interfaccia implementata dalla classe o dalla struttura che contengono la proprietà. Vedere Istruzione Implements.

  • implementslist
    Obbligatorio se viene fornito Implements. Elenco delle proprietà implementate.

    implementedproperty [ , implementedproperty ... ]

    Ogni elemento implementedproperty è associato alla sintassi e alle parti seguenti:

    interface.definedname

    Part

    Descrizione

    interface

    Obbligatorio. Nome di un'interfaccia implementata dalla classe o dalla struttura che contengono la proprietà.

    definedname

    Obbligatorio. Nome mediante il quale la proprietà viene definita in interface.

  • Get
    Obbligatorio a meno che la proprietà non sia contrassegnata come WriteOnly. Avvia una routine della proprietà Get che viene utilizzata per restituire il valore della proprietà.

  • statements
    Facoltativo. Blocco di istruzioni da eseguire nella routine Get o Set.

  • End Get
    Termina la routine della proprietà Get.

  • Set
    Obbligatorio a meno che la proprietà non sia contrassegnata come ReadOnly. Avvia una routine della proprietà Set che viene utilizzata per archiviare il valore della proprietà.

  • End Set
    Termina la routine della proprietà Set.

  • End Property
    Termina la definizione della proprietà.

Note

La dichiarazione di una proprietà viene introdotta dall'istruzione Property. A una proprietà possono essere associate una routine Get (sola lettura), una routine Set (solo scrittura), o entrambe (lettura-scrittura).

È possibile utilizzare l'istruzione Property solo a livello di modulo. In altri termini, il contesto della dichiarazione per una proprietà deve essere una classe, una struttura, un modulo o un'interfaccia e non può essere un file di origine, uno spazio dei nomi, una routine o un blocco. Per ulteriori informazioni, vedere Contesti delle dichiarazioni e livelli di accesso predefinito.

Per impostazione predefinita, le proprietà utilizzano l'accesso pubblico. È possibile regolare il livello di accesso di una proprietà mediante un modificatore di accesso sull'istruzione Property ed è anche possibile impostare un livello di accesso più restrittivo per una delle procedure della proprietà.

In Visual Basic un parametro viene passato alla routine Set durante le assegnazioni di proprietà. Se non si fornisce un parametro per la routine Set, nell'ambiente di sviluppo integrato verrà utilizzato un parametro implicito denominato value. Questo parametro contiene il valore da assegnare alla proprietà. Il valore viene in genere memorizzato in una variabile locale privata e restituito ogni volta che viene chiamata la routine Get.

Regole

  • Livelli di accesso misti. Se viene definita una proprietà lettura-scrittura, è possibile specificare un livello di accesso diverso per la routine Get o la routine Set, ma non per entrambe. In questo caso, è necessario che il livello di accesso della routine sia più restrittivo di quello della proprietà. Ad esempio, se la proprietà viene dichiarata come Friend, è possibile dichiarare la routine Set come Private, ma non come Public.

    Se viene definita una proprietà ReadOnly o WriteOnly, questa proprietà viene interamente rappresentata dalla routine della proprietà (rispettivamente, Get o Set). Poichè verrebbero impostati due livelli di accesso per la proprietà, non è possibile dichiarare un livello diverso di accesso per questa routine.

  • Tipo restituito. L'istruzione Property può dichiarare il tipo di dati del valore restituito. È possibile specificare il tipo di dati o il nome di un'enumerazione, di una struttura, di una classe o di un'interfaccia.

    Se non si specifica il parametro returntype, la proprietà restituisce il tipo Object.

  • Implementazione. Se la proprietà utilizza la parola chiave Implements, nella classe o nella struttura che la contengono è necessario che un'istruzione Implements segua immediatamente l'istruzione Class o Structure. È necessario che nell'istruzione Implements vengano incluse tutte le interfacce specificate in implementslist. Non è necessario che il nome con cui l'interfaccia definisce la proprietà Property in definedname sia identico al nome della proprietà in name.

Comportamento

  • Chiusura di una routine della proprietà. Quando la routine Get o Set torna al codice chiamante, l'esecuzione prosegue con l'istruzione successiva a quella che ha eseguito la chiamata.

    Le istruzioni Exit Property e Return consentono di uscire immediatamente da una routine della proprietà. È possibile inserire un numero illimitato di istruzioni Exit Property e Return in qualsiasi punto della routine e combinare le istruzioni Exit Property e Return.

  • Valore restituito. Per restituire un valore da una routine Get, è possibile assegnare il valore al nome della proprietà oppure includerlo in un'istruzione Return. Nell'esempio seguente il valore restituito viene assegnato al nome della proprietà quoteForTheDay e viene quindi utilizzata l'istruzione Exit Property per chiudere la routine e tornare al codice chiamante.

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

    Se si utilizza l'istruzione Exit Property senza assegnare un valore a name, la routine Get restituisce il valore predefinito per il tipo di dati della proprietà.

    L'istruzione Return assegna il valore restituito della routine Get e contemporaneamente consente di uscire dalla routine. Nell'esempio riportato di seguito viene illustrata questa situazione.

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

Esempio

Nell'esempio seguente una proprietà viene dichiarata in una classe.

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

Vedere anche

Attività

Procedura: aggiungere campi e proprietà a una classe

Concetti

Proprietà predefinite

Riferimenti

Istruzione Get

Istruzione Set (Visual Basic)

Elenco parametri