Routine Property (Visual Basic)
Una routine di proprietà è una serie di istruzioni di Visual Basic che modificano una proprietà personalizzata in un modulo, una classe o una struttura. Le routine di proprietà sono note anche come funzioni di accesso alle proprietà.
Visual Basic fornisce le routine di proprietà seguenti:
- Una routine
Get
restituisce il valore di una proprietà. Viene chiamata quando si accede alla proprietà in un'espressione. - Una routine
Set
imposta una proprietà su un valore, incluso un riferimento a un oggetto. Viene chiamata quando si assegna un valore alla proprietà.
In genere si definiscono le routine di proprietà in coppie, usando le istruzioni Get
e Set
, ma è possibile definire una sola routine se la proprietà è di sola lettura (istruzione Get) o di sola scrittura (istruzione Set).
È possibile omettere la Get
routine e Set
quando si usa una proprietà implementata automaticamente. Per altre informazioni, vedere Proprietà implementate automaticamente.
È possibile definire proprietà in classi, strutture e moduli. Le proprietà sono Public
per impostazione predefinita, di conseguenza è possibile chiamarle da qualsiasi posizione nell'applicazione in grado di accedere al contenitore della proprietà.
Per un confronto tra proprietà e variabili, vedere Differenze tra proprietà e variabili in Visual Basic.
Sintassi di dichiarazione
Una proprietà stessa è definita da un blocco di codice racchiuso all'interno dell'istruzione Property e dell'istruzione End Property
. All'interno di questo blocco, ogni routine di proprietà viene visualizzata come blocco interno racchiuso in un'istruzione di dichiarazione (Get
o Set
) e nela dichiarazione End
corrispondente.
La sintassi per dichiarare una proprietà e le relative routine è la seguente:
[Default] [Modifiers] Property PropertyName[(ParameterList)] [As DataType]
[AccessLevel] Get
' Statements of the Get procedure.
' The following statement returns an expression as the property's value.
Return Expression
End Get
[AccessLevel] Set[(ByVal NewValue As DataType)]
' Statements of the Set procedure.
' The following statement assigns newvalue as the property's value.
LValue = NewValue
End Set
End Property
' - or -
[Default] [Modifiers] Property PropertyName [(ParameterList)] [As DataType]
Modifiers
può specificare il livello di accesso e le informazioni relative a overload, override, condivisione e shadowing, nonché al fatto che la proprietà sia di sola lettura o di sola scrittura. AccessLevel
nella routine Get
o Set
può essere qualsiasi livello più restrittivo rispetto al livello di accesso specificato per la proprietà stessa. Per altre informazioni, vedere Istruzione Property.
Tipo di dati
Il tipo di dati e il livello di accesso dell'entità di sicurezza di una proprietà vengono definiti nell'istruzione Property
, non nelle routine delle proprietà. Una proprietà può avere un solo tipo di dati. Ad esempio, non è possibile definire una proprietà per archiviare un valore Decimal
ma recuperare un valore Double
.
Livello di accesso
È tuttavia possibile definire un livello di accesso dell'entità di sicurezza per una proprietà e limitare ulteriormente il livello di accesso in una delle relative routine di proprietà. Ad esempio, è possibile definire una proprietà Public
e quindi definire una routine Private Set
. La routine Get
rimane Public
. È possibile modificare il livello di accesso in una sola delle routine di una proprietà e renderlo solo più restrittivo del livello di accesso dell'entità di sicurezza. Per altre informazioni, vedere Procedura: dichiarare una proprietà con livelli di accesso misti.
Dichiarazione dei parametri
Ogni parametro viene dichiarato nello stesso modo usato per le routine Sub, ad eccezione del fatto che il meccanismo di passaggio deve essere ByVal
.
La sintassi per ogni parametro nell'elenco dei parametri è la seguente:
[Optional] ByVal [ParamArray] parametername As datatype
Se il parametro è facoltativo, è necessario specificare anche un valore predefinito come parte della relativa dichiarazione. La sintassi per specificare un valore predefinito è la seguente:
Optional ByVal parametername As datatype = defaultvalue
Valore proprietà
In una routine Get
, il valore restituito viene fornito all'espressione chiamante come valore della proprietà.
In una routine Set
, il nuovo valore della proprietà viene passato al parametro dell'istruzione Set
. Se si dichiara in modo esplicito un parametro, è necessario dichiararlo con lo stesso tipo di dati della proprietà. Se non si dichiara un parametro, il compilatore usa il parametro Value
implicito per rappresentare il nuovo valore da assegnare alla proprietà.
Sintassi di chiamata
Per richiamare una routine di proprietà in modo implicito, fare riferimento alla proprietà. Usare il nome della proprietà nello stesso modo in cui si userebbe il nome di una variabile, ad eccezione del fatto che è necessario specificare i valori per tutti gli argomenti non facoltativi e racchiudere l'elenco di argomenti tra parentesi. Se non vengono specificati argomenti, è facoltativamente possibile omettere le parentesi.
La sintassi per una chiamata implicita a una routine Set
è la seguente:
propertyname[(argumentlist)] = expression
La sintassi per una chiamata implicita a una routine Get
è la seguente:
lvalue = propertyname[(argumentlist)]
Do While (propertyname[(argumentlist)] > expression)
Illustrazione della dichiarazione e della chiamata
La proprietà seguente archivia un nome completo come due nomi costituenti, il nome e il cognome. Quando il codice chiamante legge fullName
, la routine Get
combina i due nomi costituenti e restituisce il nome completo. Quando il codice chiamante assegna un nuovo nome completo, la routine Set
tenta di suddividerlo in due nomi costituenti. Se non trova uno spazio, lo archivia tutto come nome.
Dim firstName, lastName As String
Property fullName() As String
Get
If lastName = "" Then
Return firstName
Else
Return firstName & " " & lastName
End If
End Get
Set(ByVal Value As String)
Dim space As Integer = Value.IndexOf(" ")
If space < 0 Then
firstName = Value
lastName = ""
Else
firstName = Value.Substring(0, space)
lastName = Value.Substring(space + 1)
End If
End Set
End Property
Nell'esempio seguente vengono illustrate le chiamate tipiche alle routine di proprietà di fullName
:
fullName = "MyFirstName MyLastName"
MsgBox(fullName)
Vedi anche
- Procedure
- Routine Function
- Routine Operator
- Parametri e argomenti delle routine
- Differenze tra proprietà e variabili in Visual Basic
- Procedura: Creare una proprietà
- Procedura: Chiamare una routine di proprietà
- Procedura: Dichiarare e chiamare una proprietà predefinita in Visual Basic
- Procedura: Inserire un valore in una proprietà
- Procedura: Ottenere un valore da una proprietà