Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
attributelistFacoltativo. Elenco di attributi applicabili a questa proprietà o routine
GetoSet. Vedere Elenco degli attributi.DefaultFacoltativo. 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 utilizzarePrivatenella proprietà o in una delle relative routine di proprietà. Per esempi e indicazioni dettagliate, vedere Procedura: Dichiarare e chiamare una proprietà predefinita in Visual Basic.accessmodifierFacoltativo nell'istruzione
Propertye al massimo in una delle istruzioniGeteSet. Può essere uno dei seguenti:Vedere Access levels in Visual Basic.
propertymodifiersFacoltativo. Può essere uno dei seguenti:
MustOverride OverridesNotOverridable Overrides
SharedFacoltativo. Vedere Shared.
ShadowsFacoltativo. Vedere Shadows.
ReadOnlyFacoltativo. Vedere ReadOnly.
WriteOnlyFacoltativo. Vedere WriteOnly.
IteratorFacoltativo. Vedere Iteratore.
nameObbligatorio. Nome della proprietà. Vedere Declared Element Names.
parameterlistFacoltativo. Elenco di nomi di variabili locali che rappresentano i parametri di questa proprietà e possibili parametri aggiuntivi della routine
Set. Le proprietà con parametri vengono spesso usate per creare indicizzatori o proprietà predefinite che consentono l'accesso simile alla raccolta. Vedere Elenco di parametri e Procedura: Dichiarare e chiamare una proprietà predefinita in Visual Basic.returntypeRichiesto se
Option StrictèOn. Tipo di dati del valore restituito da questa proprietà.ImplementsFacoltativo. 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.
implementslistNecessario se si fornisce
Implements. Elenco delle proprietà da implementare.implementedproperty [ , implementedproperty ... ]Ogni
implementedpropertypresenta la sintassi e le parti seguenti:interface.definednameIn parte Descrizione interfaceObbligatorio. Nome di un'interfaccia implementata dalla classe o dalla struttura che contiene questa proprietà. definednameObbligatorio. Nome in base al quale la proprietà è definita in interface.GetFacoltativo. Obbligatorio se la proprietà è contrassegnata come
ReadOnly. Avvia una routine di proprietàGetutilizzata per restituire il valore della proprietà. L'istruzioneGetnon viene utilizzata con le proprietà implementate automaticamente.statementsFacoltativo. Blocco di istruzioni da eseguire all'interno della routine
GetoSet.End GetTermina la routine della proprietà
Get.SetFacoltativo. Obbligatorio se la proprietà è contrassegnata come
WriteOnly. Avvia una routine di proprietàSetutilizzata per archiviare il valore della proprietà. L'istruzioneSetnon viene utilizzata con le proprietà implementate automaticamente.End SetTermina la routine della proprietà
Set.End PropertyTermina 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. Per esempi dettagliati di livelli di accesso misto, vedere Procedura: Dichiarare una proprietà con livelli di accesso misto.
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
Geto 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 routineSetPrivate, ma nonPublic.Se si definisce una proprietà
ReadOnlyoWriteOnly, la singola routine di proprietà ( rispettivamenteGetoSet) 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
Propertypuò 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'istruzioneImplementsimmediatamente dopo l'istruzioneClassoStructure. L'istruzioneImplementsdeve 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
GetoSettorna al codice chiamante, l'esecuzione continua con l'istruzione che segue l'istruzione che lo ha richiamato.Le istruzioni
Exit PropertyeReturncausano un'uscita immediata da una routine di proprietà. Qualsiasi numero di istruzioniExit PropertyeReturnpuò essere visualizzata in qualsiasi punto della routine ed è possibile combinare istruzioniExit PropertyeReturn.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 nomequoteForTheDaydella proprietà e quindi viene utilizzata l'istruzioneExit Propertyper restituire.Private quoteValue As String = "No quote assigned yet."ReadOnly Property QuoteForTheDay() As String Get QuoteForTheDay = quoteValue Exit Property End Get End PropertySe si utilizza
Exit Propertysenza assegnare un valore aname, la routineGetrestituisce il valore predefinito per il tipo di dati della proprietà.L'istruzione
Returnallo stesso tempo assegna il valore restituito della routineGeted 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
Proprietà con parametri
L'esempio seguente illustra come creare una proprietà con parametri, detta anche indicizzatore, che consente l'accesso simile a una matrice a una raccolta:
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
Per esempi completi di utilizzo delle proprietà, tra cui l'implementazione automatica, i livelli di accesso misti e gli scenari di convalida, vedere Procedure di proprietà.
Vedi anche
Tipi di proprietà e funzionalità
Scenari di proprietà avanzati
- Procedura: Dichiarare e chiamare una proprietà predefinita in Visual Basic
- Procedura: Dichiarare una proprietà con livelli di accesso misto