Condividi tramite


Proprietà predefinite

Aggiornamento: novembre 2007

Una proprietà che accetta argomenti può essere dichiarata come proprietà predefinita per una classe. Una proprietà predefinita è la proprietà utilizzata da Visual Basic nei casi in cui non ne sia stata assegnata una specifica per un oggetto. Le proprietà predefinite sono utili perché consentono di rendere più compatto il codice sorgente omettendo i nomi di proprietà di uso frequente.

Le proprietà più adatte per essere definite come proprietà predefinite sono quelle che accettano parametri e che si prevede verranno utilizzate più di frequente. La proprietà Item, ad esempio, rappresenta una scelta valida come proprietà predefinita di una classe Collection in quanto viene utilizzata di frequente.

Per le proprietà predefinite vengono adottati i seguenti criteri:

  • A un tipo può essere associata una sola proprietà predefinita, comprese le proprietà ereditate da una classe base. Esiste un'eccezione a questa regola. Una proprietà predefinita definita in una classe base può essere nascosta da un'altra proprietà predefinita in una classe derivata.

  • Se una proprietà predefinita di una classe base viene nascosta da una proprietà non predefinita in una classe derivata, la proprietà predefinita sarà ancora accessibile utilizzando la sintassi della proprietà predefinita.

  • Una proprietà predefinita non può essere di tipo Shared o Private.

  • Se una proprietà in overload è una proprietà predefinita, è necessario specificare Default anche per tutte le proprietà in overload con lo stesso nome.

  • È necessario che le proprietà predefinite accettino almeno un argomento.

Esempio

Nell'esempio seguente una proprietà che contiene una matrice di stringhe viene dichiarata come proprietà predefinita di una classe:

Class Class2
    ' Define a local variable to store the property value.
    Private PropertyValues As String()
    ' Define the default property.
    Default Public Property Prop1(ByVal Index As Integer) As String
        Get
            Return PropertyValues(Index)
        End Get
        Set(ByVal Value As String)
            If PropertyValues Is Nothing Then
                ' The array contains Nothing when first accessed.
                ReDim PropertyValues(0)
            Else
                ' Re-dimension the array to hold the new element.
                ReDim Preserve PropertyValues(UBound(PropertyValues) + 1)
            End If
            PropertyValues(Index) = Value
        End Set
    End Property
End Class

Accesso alle proprietà predefinite

È possibile accedere alle proprietà predefinite utilizzando una sintassi abbreviata. Nel seguente frammento di codice, ad esempio, è utilizzata sia la sintassi standard che la sintassi delle proprietà predefinite:

Dim C As New Class2
' The first two lines of code access a property the standard way.

' Property assignment.
C.Prop1(0) = "Value One"
' Property retrieval.
MsgBox(C.Prop1(0))

' The following two lines of code use default property syntax.

' Property assignment.
C(1) = "Value Two"
' Property retrieval.
MsgBox(C(1))

Vedere anche

Concetti

Raccomandazioni sull'aggiornamento: risoluzione delle proprietà predefinite senza parametri

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

Riferimenti

Default (Visual Basic)