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.
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
Getrestituisce il valore di una proprietà. Viene chiamata quando si accede alla proprietà in un'espressione. - Una routine
Setimposta 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 le procedure Get 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 sovraccarico, ridefinizione, condivisione e ombreggiamento, nonché se la proprietà è di sola lettura o 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 ulteriori informazioni, vedere Dichiarazione delle Proprietà.
Tipo di dati
Il tipo di dati e il livello di accesso principale di una proprietà vengono definiti nell'istruzione Property, non nelle procedure 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 principale per una proprietà e limitare ulteriormente il livello di accesso in una delle relative procedure di proprietà. Ad esempio, è possibile definire una proprietà Public e quindi definire una routine Private Set. La procedura Get rimane Public. È possibile modificare il livello di accesso solo in una delle procedure di una proprietà e renderlo solo più restrittivo del livello di accesso principale. 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 procedura 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 elementi 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 di battesimo.
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
- Procedure di Funzione
- Procedure dell'Operatore
- Parametri e argomenti delle procedure
- Differenze tra proprietà e variabili in Visual Basic
- Procedura: Creare una proprietà
- Procedura: Chiamare una procedura 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à