Procedura: dichiarare e chiamare una proprietà predefinita in Visual Basic

Aggiornamento: novembre 2007

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 Proprietà predefinite.

Per dichiarare una proprietà predefinita

  1. Dichiarare la proprietà secondo la normale procedura. Non specificare la parola chiave Shared o Private.

  2. Includere la parola chiave Default nella dichiarazione della proprietà.

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

  1. Dichiarare una variabile del tipo struttura o classe che la contiene.

    Dim x As New class1(3)
    
  2. Utilizzare il nome di variabile da solo in un'espressione in cui in genere viene incluso il nome della proprietà.

    MsgBox(x)
    
  3. Dopo il nome della variabile inserire un elenco di argomenti tra parentesi. Una proprietà predefinita deve accettare almeno un argomento.

    MsgBox(x(1))
    
  4. 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))
    
  5. 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"
    
  6. È 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 nel codice (Visual Basic).

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 (oggetto Collection) in diverse classi di insiemi.

Programmazione efficiente

L'utilizzo di proprietà predefinite può determinare 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à

Procedura: dichiarare una proprietà con livelli di accesso misto

Procedura: chiamare una routine di proprietà

Procedura: inserire un valore in una proprietà

Procedura: ottenere un valore da una proprietà

Concetti

Routine Property

Parametri e argomenti delle routine

Modifiche alle proprietà predefinite per gli utenti di Visual Basic 6.0

Differenze tra proprietà e variabili in Visual Basic

Riferimenti

Istruzione Property

Default (Visual Basic)