Routine Property (Visual Basic)
Una routine della proprietà è una serie di istruzioni di Visual Basic che gestiscono una proprietà personalizzata di un modulo, una classe o una struttura. Le routine Property sono anche note come funzioni di accesso alle proprietà.
In Visual Basic sono disponibili le seguenti routine della proprietà:
Una routine Get restituisce il valore di una proprietà e viene chiamata quando si accede alla proprietà in un'espressione.
Una routine Set imposta una proprietà su un valore, compreso un riferimento a un oggetto. Viene chiamata quando si assegna un valore alla proprietà.
Le routine della proprietà vengono generalmente definite in coppie, mediante le istruzioni Get e Set, tuttavia è possibile definire una routine singolarmente, se la proprietà è in sola lettura (Istruzione Get) o in sola scrittura (Istruzione Set (Visual Basic)).
È possibile omettere le routine Get e Set in caso di utilizzo di una proprietà implementata automaticamente. Per ulteriori informazioni, vedere Proprietà implementate automaticamente (Visual Basic).
È possibile definire le proprietà in classi, strutture e moduli. Le proprietà sono Public per impostazione predefinita, il che significa che è possibile chiamarle da un punto qualsiasi dell'applicazione che può 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à viene definita da un blocco di codice racchiuso tra le istruzioni Istruzione Property e End Property. All'interno del blocco ciascuna routine della proprietà viene visualizzata come un blocco interno racchiuso tra un'istruzione di dichiarazione (Get o Set) e la 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]
I Modifiers possono specificare il livello di accesso e informazioni su overload, override, condivisione e shadowing, nonché indicare se la proprietà è in sola lettura o scrittura. AccessLevel la routine di Set o di Get può essere qualsiasi livello più restrittivo rispetto al livello di accesso specificato per la proprietà stessa. Per ulteriori informazioni, vedere Istruzione Property.
Tipo di dati
Il tipo di dati e il livello di accesso principale di una proprietà sono definiti nell'istruzione Property, non nelle routine della proprietà. Una proprietà può avere un solo tipo di dati. Non è possibile, ad esempio, definire una proprietà per memorizzare un valore Decimal ma recuperare un valore Double.
Livello di accesso
È possibile, tuttavia, definire un livello di accesso principale per una proprietà e restringere ulteriormente il livello di accesso in una delle rispettive routine. È possibile, ad esempio, definire una proprietà Public, quindi definire una routine Private Set. La routine Get rimane Public. È possibile modificare il livello di accesso in una sola delle routine della proprietà e renderlo solo più restrittivo rispetto al livello di accesso principale. Per ulteriori informazioni, vedere Procedura: dichiarare una proprietà con livelli di accesso misti (Visual Basic).
Dichiarazione dei parametri
Ciascun parametro viene dichiarato mediante la stessa procedura utilizzata per Routine Sub (Visual Basic), a eccezione del fatto che è necessario che il meccanismo di passaggio sia ByVal.
La sintassi per ciascun parametro dell'elenco dei parametri è la seguente:
[Optional] ByVal [ParamArray] parametername As datatype
Se il parametro è facoltativo, è necessario specificare nella dichiarazione anche un valore predefinito. La sintassi per la specifica di 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 esplicitamente un parametro, è necessario dichiararlo con lo stesso tipo di dati della proprietà. Se nessun parametro viene dichiarato, viene utilizzato il parametro implicito Value per rappresentare il nuovo valore da assegnare alla proprietà.
Sintassi di chiamata
Si richiama implicitamente una routine della proprietà facendo riferimento alla proprietà. Il nome della proprietà viene utilizzato come se utilizzasse il nome di una variabile. L'unica differenza consiste nel fatto che è necessario fornire valori per tutti gli argomenti non facoltativi e racchiudere tra parentesi l'elenco degli argomenti. Se non viene specificato alcun argomento, è anche 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à riportata di seguito memorizza un nome completo come due nomi costitutivi, ovvero il nome e il cognome. Quando il codice chiamante legge fullName, la routine Get combina i due nomi costitutivi e restituisce il nome completo. Quando il codice chiamante assegna un nuovo nome completo, la routine Set tenta di scomporlo in due parti costitutive. Se non viene rilevato alcuno spazio, viene memorizzato 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 riportato di seguito vengono illustrate le chiamate tipiche alle routine delle proprietà di fullName.
fullName = "MyFirstName MyLastName"
MsgBox(fullName)
Vedere anche
Attività
Procedura: creare una proprietà (Visual Basic)
Procedura: chiamare una routine di proprietà (Visual Basic)
Procedura: dichiarare e chiamare una proprietà predefinita in Visual Basic
Procedura: inserire un valore in una proprietà (Visual Basic)
Procedura: ottenere un valore da una proprietà (Visual Basic)
Concetti
Routine Function (Visual Basic)
Routine di operatore (Visual Basic)