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:propertymodifiers
Facoltativo. ad esempio uno dei seguenti:MustOverride Overrides
NotOverridable Overrides
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