Compartir a través de


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 tener acceso sin especificarla. Cuando el código llama a una clase o estructura por su nombre, pero no a una propiedad, y el contexto permite el acceso a una propiedad, Visual Basic resuelve el acceso a la propiedad predeterminada de esa clase o estructura si esta 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 obtener más información, consulte Valor predeterminado.

Para declarar una propiedad predeterminada

  1. Declare la propiedad de la manera normal. No especifique la Shared palabra clave o Private .

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

  3. Especifique al menos un parámetro para 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 donde normalmente incluiría el nombre de propiedad.

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

    MsgBox(x(1))
    
  4. Para obtener el valor de la propiedad predeterminado, use el nombre de la variable, con una lista de argumentos entre paréntesis, en una expresión o después del signo igual (=) en 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 propiedad predeterminado junto con el nombre de la variable, como haría para tener acceso 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 myProperty predeterminada en la clase class1. Las tres instrucciones de asignación almacenan valores en myPropertyy la MsgBox llamada 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 Item[] propiedad en varias clases de colección.

Programación sólida

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

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 planea 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, debe considerar no definir las propiedades predeterminadas. Para la legibilidad del código, también debe considerar la posibilidad de hacer referencia siempre a todas las propiedades explícitamente, incluso a las propiedades predeterminadas.

Consulte también