Istruzione Property
Dichiara il nome di una proprietà e le routine della proprietà usate per archiviare e recuperare il valore della proprietà.
Sintassi
[ <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 ]
Parti
attributelist
Facoltativo. Elenco di attributi applicabili a questa proprietà o routine
Get
oSet
. Vedere Elenco degli attributi.Default
Facoltativo. Specifica che questa proprietà è la proprietà predefinita per la classe o la struttura in cui è definita. Le proprietà predefinite devono accettare parametri e possono essere impostate e recuperate senza specificare il nome della proprietà. Se si dichiara la proprietà come
Default
, non è possibile utilizzarePrivate
nella proprietà o in una delle relative routine di proprietà.accessmodifier
Facoltativo nell'istruzione
Property
e al massimo in una delle istruzioniGet
eSet
. Può essere uno dei seguenti:Vedere Access levels in Visual Basic.
propertymodifiers
Facoltativo. Può essere uno dei seguenti:
MustOverride Overrides
NotOverridable Overrides
Shared
Facoltativo. Vedere Shared.
Shadows
Facoltativo. Vedere Shadows.
ReadOnly
Facoltativo. Vedere ReadOnly.
WriteOnly
Facoltativo. Vedere WriteOnly.
Iterator
Facoltativo. Vedere Iteratore.
name
Obbligatorio. Nome della proprietà. Vedere Declared Element Names.
parameterlist
Facoltativo. Elenco di nomi di variabili locali che rappresentano i parametri di questa proprietà e possibili parametri aggiuntivi della routine
Set
. Vedere Elenco parametri.returntype
Richiesto se
Option Strict
èOn
. Tipo di dati del valore restituito da questa proprietà.Implements
Facoltativo. Indica che questa proprietà implementa una o più proprietà, ognuna definita in un'interfaccia implementata dalla classe o dalla struttura contenitore di questa proprietà. Vedere Istruzione Implements.
implementslist
Necessario se si fornisce
Implements
. Elenco delle proprietà da implementare.implementedproperty [ , implementedproperty ... ]
Ogni
implementedproperty
presenta la sintassi e le parti seguenti:interface.definedname
In parte Descrizione interface
Obbligatorio. Nome di un'interfaccia implementata dalla classe o dalla struttura che contiene questa proprietà. definedname
Obbligatorio. Nome in base al quale la proprietà è definita in interface
.Get
Facoltativo. Obbligatorio se la proprietà è contrassegnata come
ReadOnly
. Avvia una routine di proprietàGet
utilizzata per restituire il valore della proprietà. L'istruzioneGet
non viene utilizzata con le proprietà implementate automaticamente.statements
Facoltativo. Blocco di istruzioni da eseguire all'interno della routine
Get
oSet
.End Get
Termina la routine della proprietà
Get
.Set
Facoltativo. Obbligatorio se la proprietà è contrassegnata come
WriteOnly
. Avvia una routine di proprietàSet
utilizzata per archiviare il valore della proprietà. L'istruzioneSet
non viene utilizzata con le proprietà implementate automaticamente.End Set
Termina la routine della proprietà
Set
.End Property
Termina la definizione di questa proprietà.
Osservazioni:
L'istruzione Property
introduce la dichiarazione di una proprietà. Una proprietà può avere una routine di Get
(sola lettura), una routine Set
(solo scrittura) o entrambe (lettura/scrittura). È possibile omettere la Get
routine e Set
quando si usa una proprietà implementata automaticamente. Per altre informazioni, vedere Proprietà implementate automaticamente.
Si può usare Property
solo a livello di classe. 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 altre informazioni, vedere Contesti delle dichiarazioni e livelli di accesso predefiniti.
Per impostazione predefinita, le proprietà usano l'accesso pubblico. È possibile modificare il livello di accesso di una proprietà con un modificatore di accesso nell'istruzione Property
e, facoltativamente, è possibile modificare una delle relative procedure di proprietà a un livello di accesso più restrittivo.
Visual Basic passa un parametro alla routine Set
durante le assegnazioni di proprietà. Se non si specifica un parametro per Set
, l'ambiente di sviluppo integrato (IDE) usa un parametro implicito denominato value
. Questo parametro contiene il valore da assegnare alla proprietà. Questo valore viene in genere archiviato in una variabile locale privata e restituito ogni volta che viene chiamata la routine Get
.
Regole
Livelli di accesso misti. Se si sta definendo una proprietà di lettura/scrittura, è possibile specificare facoltativamente un livello di accesso diverso per la routine
Get
o per laSet
, ma non per entrambe. In questo caso, il livello di accesso della routine deve essere più restrittivo del livello di accesso della proprietà. Ad esempio, se la proprietà è dichiarataFriend
, è possibile dichiarare la routineSet
Private
, ma nonPublic
.Se si definisce una proprietà
ReadOnly
oWriteOnly
, la singola routine di proprietà ( rispettivamenteGet
oSet
) rappresenta tutte le proprietà. Non è possibile dichiarare un livello di accesso diverso per una procedura di questo tipo, perché in questo modo verranno impostati due livelli di accesso per la proprietà.Tipo restituito. L'istruzione
Property
può dichiarare il tipo di dati del valore restituito. È possibile specificare qualsiasi tipo di dati o il nome di un'enumerazione, struttura, classe o interfaccia.Se non si specifica
returntype
, la proprietà restituisceObject
.Implementazione. Se questa proprietà usa la parola chiave
Implements
, la classe o la struttura contenitore deve disporre di un'istruzioneImplements
immediatamente dopo l'istruzioneClass
oStructure
. L'istruzioneImplements
deve includere ogni interfaccia specificata inimplementslist
. Tuttavia, il nome in base al quale un'interfaccia definisceProperty
(indefinedname
) non deve essere uguale al nome di questa proprietà (inname
).
Comportamento
Restituzione da una routine di proprietà. Quando la routine
Get
oSet
torna al codice chiamante, l'esecuzione continua con l'istruzione che segue l'istruzione che lo ha richiamato.Le istruzioni
Exit Property
eReturn
causano un'uscita immediata da una routine di proprietà. Qualsiasi numero di istruzioniExit Property
eReturn
può essere visualizzata in qualsiasi punto della routine ed è possibile combinare istruzioniExit Property
eReturn
.Valore restituito. Per restituire un valore da una routine
Get
, è possibile assegnare il valore al nome della proprietà o includerlo in un'istruzioneReturn
. Nell'esempio seguente il valore restituito viene assegnato al nomequoteForTheDay
della proprietà e quindi viene utilizzata l'istruzioneExit Property
per restituire.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
Exit Property
senza assegnare un valore aname
, la routineGet
restituisce il valore predefinito per il tipo di dati della proprietà.L'istruzione
Return
allo stesso tempo assegna il valore restituito della routineGet
ed esce 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 viene dichiarata una proprietà 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