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

  1. Dichiarare la proprietà nel modo normale. 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 definire una proprietà predefinita che 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 di classe o struttura contenitore.

    Dim x As New class1(3)
    
  2. Usare solo il nome della variabile in un'espressione in cui normalmente si includerebbe il nome della proprietà.

    MsgBox(x)
    
  3. Far seguire al nome della variabile un elenco di argomenti tra parentesi. Una proprietà predefinita deve accettare almeno un argomento.

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