Propiedades predeterminadas

Actualización: noviembre 2007

Una propiedad que acepta argumentos puede declararse como propiedad predeterminada de una clase. Una propiedad predeterminada es aquella que utiliza Visual Basic cuando no se haya asignado una propiedad específica para un objeto. Las propiedades predeterminadas son útiles porque permiten que el código fuente sea más compacto al omitirse nombres de propiedades que se utilizan frecuentemente.

Las mejores candidatas a propiedades predeterminadas son las propiedades que aceptan parámetros y que se utilizarán con más frecuencia. Por ejemplo, la propiedad Item es una buena opción como propiedad predeterminada de una clase de colección, ya que se usa con frecuencia.

Las siguientes reglas se aplican a las propiedades predeterminadas:

  • Un tipo sólo puede tener una propiedad predeterminada, incluyendo las propiedades heredadas de una clase base. Hay una excepción para esta regla. Una propiedad predeterminada definida en una clase base puede ser sombreada por otra propiedad predeterminada de una clase derivada.

  • Si una propiedad predeterminada de una clase base es sombreada por una propiedad no predeterminada de una clase derivada, la propiedad predeterminada continúa permitiendo el acceso mediante la sintaxis de propiedad predeterminada.

  • Una propiedad predeterminada no puede ser de tipo Shared o Private.

  • Si una propiedad sobrecargada es una propiedad predeterminada, también lo serán todas las demás propiedades sobrecargadas que tengan el mismo nombre.

  • Las propiedades predeterminadas deben aceptar al menos un argumento.

Ejemplo

El siguiente ejemplo declara una propiedad que contiene una matriz de cadenas como propiedad predeterminada de una clase:

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

Acceso a propiedades predeterminadas

El acceso a propiedades predeterminadas puede realizarse mediante sintaxis abreviada. Por ejemplo, en el fragmento de código siguiente se utiliza sintaxis estándar y sintaxis predeterminada:

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

Vea también

Conceptos

Recomendación de actualización: resolver las propiedades predeterminadas sin parámetros

Cambios en las propiedades predeterminadas para usuarios de Visual Basic 6.0

Referencia

Default (Visual Basic)