Condividi tramite


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 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 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

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. La routine access level su Get o Set può essere di 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 nell'elenco dei parametri è la seguente:

[Optional] ByVal [ParamArray] parametername As datatype

Se il parametro è facoltativo, è anche necessario specificare un valore predefinito nella relativa dichiarazione. 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 della 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 in Visual Basic

Routine Function (Visual Basic)

Routine di operatore (Visual Basic)

Parametri e argomenti delle routine (Visual Basic)

Differenze tra proprietà e variabili in Visual Basic