Proprietà e routine delle proprietà
Aggiornamento: novembre 2007
Per memorizzare informazioni in un oggetto è possibile utilizzare sia campi sia proprietà. Mentre i campi sono semplicemente variabili pubbliche, le proprietà utilizzano le routine delle proprietà per controllare la modalità di impostazione e restituzione dei valori. Le routine delle proprietà sono blocchi di codice dichiarati nelle definizioni delle proprietà che possono essere utilizzati per eseguire del codice quando viene impostato o recuperato il valore di una proprietà.
In Visual Basic sono presenti due tipi di routine delle proprietà: le routine Get per il recupero del valore di una proprietà e le routine Set per l'assegnazione di un valore a una proprietà. È possibile, ad esempio, che una proprietà in cui viene archiviato il saldo di un conto bancario utilizzi il codice in una routine della proprietà Get per inserire gli interessi e controllare le spese del servizio prima di restituire il saldo disponibile. È quindi possibile utilizzare la routine della proprietà Set per convalidare il saldo e impedire che venga aggiornato in maniera non corretta. Le routine delle proprietà consentono a un oggetto di proteggere e convalidare i propri dati.
Nel frammento di codice riportato di seguito vengono confrontate le modalità di convalida dei valori dei campi e delle proprietà.
Protected Sub TestFieldsAndProperties()
' Assume, for this example, that the only valid values for
' the field and property are numbers less than 10.
Dim NewClass As New ThisClass
' Test data validation.
' Works because there is no data validation.
NewClass.ThisField = 36
' Will print 36.
MsgBox("ThisField = " & NewClass.ThisField)
' The attempt to set the field to a value greater than 10 will silently fail.
NewClass.ThisProperty = 36
' The next statement will print the old value of 0 instead.
MsgBox("ThisProperty = " & NewClass.ThisProperty)
End Sub
Public Class ThisClass
' Declare a field.
Public ThisField As Integer
' Field used for Property Set operations.
Private thisPropertyValue As Integer = 0
' Declare a property.
Public Property ThisProperty() As Integer
Get
Return thisPropertyValue
End Get
Set(ByVal Value As Integer)
' Only allow Set operation for values less than 10.
If Value < 10 Then thisPropertyValue = Value
End Set
End Property
End Class
Utilizzando la routine TestFieldsAndProperties è possibile creare un'istanza della classe e impostare e recuperare i valori dei campi e delle proprietà. Ai fini dell'esempio, si presuppone che gli unici valori validi siano numeri inferiori a 10. Dal momento che non esiste alcun metodo per convalidare i valori assegnati ai campi, è consentita l'impostazione del campo sul valore 36. Poiché tuttavia la proprietà esegue assegnazioni solo per numeri inferiori a 10, il tentativo di impostare il valore su 36 verrà ignorato.
Proprietà di sola lettura e sola scrittura
Per la maggior parte delle proprietà sono disponibili sia routine della proprietà Get che routine della proprietà Set che possono essere utilizzate per la lettura e la modifica dei valori archiviati nella proprietà. È possibile, comunque, utilizzare i modificatori ReadOnly o WriteOnly per impedire la modifica o la lettura delle proprietà.
Non è possibile associare routine della proprietà Set alle proprietà di sola lettura. Tali proprietà risultano utili per gli elementi che si desidera esporre senza consentirne la modifica. È possibile, ad esempio, utilizzare una proprietà di sola lettura per fornire la velocità del processore di un computer.
Non è possibile associare routine della proprietà Get alle proprietà di sola scrittura. Tali proprietà risultano utili per la configurazione di oggetti con dati che non devono o non possono essere archiviati nell'oggetto. Una proprietà di sola scrittura, ad esempio, può essere utilizzata per ottenere una password e modificare lo stato dell'oggetto senza archiviare la password.
![]() |
---|
Nelle versioni precedenti di Visual Basic era possibile utilizzare le routine della proprietà Let per assegnare oggetti alle proprietà. In Visual Basic le routine della proprietà Let non sono necessarie in quanto l'assegnazione degli oggetti viene gestita come un qualsiasi altro tipo di assegnazione. |
Vedere anche
Concetti
Routine delle proprietà e campi