Procedura: dichiarare e chiamare una proprietà predefinita in Visual Basic
Un proprietà predefinita è una proprietà di classe o struttura a cui il codice può accedere senza specificarla. Quando il codice chiamante denomina una classe o una struttura ma non una proprietà e il contesto consente l'accesso a una proprietà, Visual Basic risolve l'accesso alla proprietà predefinita di tale classe o struttura, se presente.
Una classe o una struttura può avere al massimo una proprietà predefinita. Tuttavia, è possibile eseguire l'overload di una proprietà predefinita e includerne più di una versione.
Per altre informazioni, vedere Proprietà predefinita.
Per dichiarare una proprietà predefinita
Dichiarare la proprietà nel modo normale. Non specificare la parola chiave
Shared
oPrivate
.Includere la parola chiave
Default
nella dichiarazione della proprietà.Specificare almeno un parametro per la proprietà. Non è possibile definire una proprietà predefinita che non accetta almeno un argomento.
Default Property myProperty(ByVal index As Integer) As String
Per chiamare una proprietà predefinita
Dichiarare una variabile del tipo di classe o struttura contenitore.
Dim x As New class1(3)
Usare solo il nome della variabile in un'espressione in cui normalmente si includerebbe il nome della proprietà.
MsgBox(x)
Far seguire al nome della variabile un elenco di argomenti tra parentesi. Una proprietà predefinita deve accettare almeno un argomento.
MsgBox(x(1))
Per recuperare il valore predefinito della proprietà, usare il nome della variabile, con un elenco di argomenti, in un'espressione o dopo il segno uguale (
=
) in un'istruzione di assegnazione.MsgBox(x(1) & x(2) & x(3))
Per impostare il valore predefinito della proprietà, usare il nome della variabile, con un elenco di argomenti, sul lato sinistro di un'istruzione di assegnazione.
x(1) = "Hello" x(2) = " " x(3) = "World"
È sempre possibile specificare il nome della proprietà predefinito insieme al nome della variabile, esattamente come si farebbe per accedere a qualsiasi altra proprietà.
x.myProperty(1) = "Hello" x.myProperty(2) = " " x.myProperty(3) = "World"
Esempio 1
Nell'esempio seguente viene dichiarata una proprietà predefinita in una classe.
Public Class class1
Private myStrings() As String
Sub New(ByVal size As Integer)
ReDim myStrings(size)
End Sub
Default Property myProperty(ByVal index As Integer) As String
Get
' The Get property procedure is called when the value
' of the property is retrieved.
Return myStrings(index)
End Get
Set(ByVal Value As String)
' The Set property procedure is called when the value
' of the property is modified.
' The value to be assigned is passed in the argument
' to Set.
myStrings(index) = Value
End Set
End Property
End Class
Esempio 2
Nell'esempio seguente viene illustrato come chiamare la proprietà predefinita myProperty
nella classe class1
. Le tre istruzioni di assegnazione archiviano i valori in myProperty
e la chiamata MsgBox legge i valori.
Sub Test()
Dim x As New class1(3)
x(1) = "Hello"
x(2) = " "
x(3) = "World"
MsgBox(x(1) & x(2) & x(3))
End Sub
L'uso più comune di una proprietà predefinita è la proprietà Item[] in varie classi di raccolte.
Programmazione efficiente
Le proprietà predefinite possono comportare una piccola riduzione dei caratteri del codice sorgente, ma possono renderlo più difficile da leggere. Se il codice chiamante non ha familiarità con la classe o la struttura, quando crea un riferimento alla classe o al nome della struttura non può essere certo se tale riferimento acceda alla classe o alla struttura stessa o a una proprietà predefinita. Ciò può causare errori del compilatore o errori di logica di runtime poco visibili.
È possibile ridurre relativamente la probabilità di errori legati alle proprietà predefinite usando sempre l'istruzione Option Strict per impostare il controllo del tipo del compilatore su On
.
Se si prevede di usare una classe o una struttura predefinita nel codice, è necessario determinare se abbia una proprietà predefinita e, in tal caso, qual è il nome.
A causa di questi svantaggi, è consigliabile non definire le proprietà predefinite. Per la leggibilità del codice, è anche consigliabile fare riferimento sempre a tutte le proprietà in modo esplicito, comprese quelle predefinite.
Vedi anche
- Routine Property
- Parametri e argomenti delle routine
- Istruzione Property
- Predefinita
- Differenze tra proprietà e variabili in Visual Basic
- Procedura: Creare una proprietà
- Procedura: Dichiarare una proprietà con livelli di accesso misti
- Procedura: Chiamare una routine di proprietà
- Procedura: Inserire un valore in una proprietà
- Procedura: Ottenere un valore da una proprietà