Procedura: dichiarare e chiamare una proprietà predefinita in Visual Basic
Una proprietà predefinita è una proprietà di una classe o di una struttura alla quale il codice può accedere senza specificarla. Quando il codice chiamante fa riferimento a una classe o a una struttura ma non a una proprietà e il contesto consente l'accesso a una proprietà, in Visual Basic l'accesso viene risolto nella proprietà predefinita di tale classe o struttura, se disponibile.
Una classe o una struttura può includere al massimo una proprietà predefinita. È tuttavia possibile eseguire l'overload di una proprietà predefinita e disporre di più versioni di tale proprietà.
Per ulteriori informazioni, vedere Default (Visual Basic).
Per dichiarare una proprietà predefinita
Dichiarare la proprietà secondo la normale procedura. Non specificare la parola chiave Shared o Private.
Includere la parola chiave Default nella dichiarazione della proprietà.
Specificare almeno un parametro per la proprietà. Non è possibile specificare una proprietà predefinita se non accetta almeno un argomento.
Default Property myProperty(ByVal index As Integer) As String
Per chiamare una proprietà predefinita
Dichiarare una variabile del tipo struttura o classe che la contiene.
Dim x As New class1(3)
Utilizzare il nome di variabile da solo in un'espressione in cui in genere viene incluso il nome della proprietà.
MsgBox(x)
Dopo il nome della variabile inserire un elenco di argomenti tra parentesi. Una proprietà predefinita deve accettare almeno un argomento.
MsgBox(x(1))
Per recuperare il valore della proprietà predefinita, utilizzare il nome della variabile, con un elenco di argomenti, in un'espressione o dopo il segno di uguale (=) in un'istruzione di assegnazione.
MsgBox(x(1) & x(2) & x(3))
Per impostare il valore della proprietà predefinita, utilizzare il nome della variabile, con un elenco di argomenti, a sinistra dell'istruzione di assegnazione.
x(1) = "Hello" x(2) = " " x(3) = "World"
È sempre possibile specificare il nome della proprietà predefinita con il nome della variabile, come quando si accede a qualsiasi altra proprietà.
x.myProperty(1) = "Hello" x.myProperty(2) = " " x.myProperty(3) = "World"
Esempio
Nell'esempio riportato di seguito 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
Questo esempio di codice è disponibile anche come frammento di codice IntelliSense. Nella casella di selezione dei frammenti di codice si trova in Linguaggio Visual Basic. Per ulteriori informazioni, vedere Procedura: inserire frammenti di codice IntelliSense.
Nell'esempio riportato di seguito viene illustrato come chiamare la proprietà predefinita myProperty nella classe class1. I valori vengono archiviati dalle tre istruzioni di assegnazione in myProperty e vengono letti dalla chiamata a MsgBox.
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'utilizzo più comune di una proprietà predefinita è rappresentato dalla proprietà Item in diverse classi di insiemi.
Programmazione efficiente
L'utilizzo di proprietà predefinite può consentire una lieve riduzione del numero di caratteri del codice sorgente, ma può rendere più difficile la lettura di tale codice. Se il codice chiamante non viene comunemente utilizzato con una specifica classe o struttura, quando fa riferimento al nome di quest'ultima non è in grado di determinare se il riferimento accede alla classe o alla struttura oppure a una proprietà predefinita. Questa situazione può generare errori del compilatore o errori meno evidenti della logica di runtime.
È possibile ridurre in qualche misura il rischio di errori generati dalla proprietà predefinita utilizzando sempre l'Istruzione Option Strict per impostare il controllo dei tipi del compilatore su On.
Se si intende utilizzare una classe o una struttura predefinita nel codice, è necessario stabilire se include una proprietà predefinita e, in caso affermativo, identificarne il nome.
A causa degli svantaggi elencati, si consiglia di evitare di specificare proprietà predefinite. Per migliorare la leggibilità del codice, si consiglia inoltre di fare sempre riferimento in modo esplicito a tutte le proprietà, incluse quelle predefinite.
Vedere anche
Attività
Procedura: creare una proprietà (Visual Basic)
Procedura: dichiarare una proprietà con livelli di accesso misti (Visual Basic)
Procedura: chiamare una routine di proprietà (Visual Basic)
Procedura: inserire un valore in una proprietà (Visual Basic)
Procedura: ottenere un valore da una proprietà (Visual Basic)
Riferimenti
Concetti
Routine Property (Visual Basic)