Cómo: Declarar y llamar a una propiedad predeterminada en Visual Basic

Una propiedad predeterminada es una propiedad de clase o estructura a la que el código puede acceder sin especificarla. Si el código de llamada asigna un nombre a una clase o estructura pero no a una propiedad, y si el contexto permite el acceso a una propiedad, Visual Basic resuelve el acceso a la propiedad predeterminada de esa clase o estructura si existe.

Una clase o estructura puede tener como máximo una propiedad predeterminada. Sin embargo, puede sobrecargar una propiedad predeterminada y tener más de una versión de ella.

Para más información, consulte Propiedad predeterminada.

Para declarar una propiedad predeterminada

  1. Declare la propiedad de la manera normal. No especifique las palabras clave Shared ni Private.

  2. Incluya la palabra clave Default en la declaración de propiedad.

  3. Especifique al menos un parámetro de la propiedad. No se puede definir una propiedad predeterminada que no tome al menos un argumento.

    Default Property myProperty(ByVal index As Integer) As String
    

Para llamar a una propiedad predeterminada

  1. Declare una variable del tipo de clase o estructura contenedora.

    Dim x As New class1(3)
    
  2. Use solo el nombre de la variable en una expresión en la que normalmente incluiría el nombre de la propiedad.

    MsgBox(x)
    
  3. El nombre de la variable debe ir seguido de una lista de argumentos entre paréntesis. Una propiedad predeterminada debe tomar al menos un argumento.

    MsgBox(x(1))
    
  4. Para recuperar el valor de la propiedad predeterminada, use el nombre de la variable, con una lista de argumentos, en una expresión o después del signo igual (=) de una instrucción de asignación.

    MsgBox(x(1) & x(2) & x(3))
    
  5. Para establecer el valor de propiedad predeterminado, use el nombre de la variable, con una lista de argumentos, en el lado izquierdo de una instrucción de asignación.

    x(1) = "Hello"
    x(2) = " "
    x(3) = "World"
    
  6. Siempre puede especificar el nombre de la propiedad predeterminada junto con el nombre de la variable, igual que lo haría para acceder a cualquier otra propiedad.

    x.myProperty(1) = "Hello"
    x.myProperty(2) = " "
    x.myProperty(3) = "World"
    

Ejemplo 1

En el ejemplo siguiente se declara una propiedad predeterminada en una clase.

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

Ejemplo 2

En el ejemplo siguiente se muestra cómo llamar a la propiedad predeterminada myProperty en la clase class1. Las tres instrucciones de asignación almacenan valores en myProperty y la llamada a MsgBox lee los valores.

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

El uso más común de una propiedad predeterminada es la propiedad Item[] en varias clases de recopilación.

Programación sólida

Las propiedades predeterminadas pueden suponer una pequeña reducción en los caracteres de código fuente, pero pueden dificultar la lectura del código. Si el código de llamada no está familiarizado con la clase o estructura, en los casos en los que hace referencia al nombre de una clase o estructura, no puede estar seguro de si esa referencia tiene acceso a la propia clase o estructura, o a una propiedad predeterminada. Esto puede provocar errores del compilador o errores sutiles de lógica en tiempo de ejecución.

Puede reducir algo la posibilidad de errores de propiedad predeterminada empleando siempre la instrucción Option Strict para establecer la comprobación de tipos del compilador en On.

Si tiene previsto usar una clase o estructura predefinidas en el código, debe determinar si tiene una propiedad predeterminada y, si es así, cuál es su nombre.

Debido a estas desventajas, debería considerar la opción de no definir propiedades predeterminadas. Para la legibilidad del código, también debería considerar la posibilidad de hacer referencia siempre a todas las propiedades explícitamente, incluso a las propiedades predeterminadas.

Consulte también