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

Actualización: noviembre 2007

Una propiedad predeterminada es una propiedad de clase o de estructura a la que el código puede tener acceso sin especificarlo. Cuando el código de llamada menciona una clase o estructura pero no una propiedad, y el contexto permite tener 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 a lo sumo una propiedad predeterminada. No obstante, puede sobrecargar una propiedad predeterminada y tener más de una versión de ella.

Para obtener más información, vea Propiedades predeterminadas.

Para declarar una propiedad predeterminada

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

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

  3. Especifique al menos un parámetro para la propiedad. No puede definir una propiedad predeterminada que no acepte al menos un argumento.

    Default Property myProperty(ByVal index As Integer) As String
    

Para llamar a una propiedad predeterminada

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

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

    MsgBox(x)
    
  3. Agregue detrás del nombre de variable una lista de argumentos entre paréntesis. Una propiedad predeterminada debe aceptar al menos un argumento.

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

    MsgBox(x(1) & x(2) & x(3))
    
  5. Para establecer el valor predeterminado de la propiedad, utilice el nombre de variable, con una lista de argumentos, a la izquierda 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 variable, tal como lo haría para tener acceso a cualquier otra propiedad.

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

Ejemplo

En el siguiente ejemplo 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

Este ejemplo de código también está disponible como fragmento de código de IntelliSense. En el selector de fragmentos de código, se encuentra en Lenguaje Visual Basic. Para obtener más información, vea Cómo: Insertar fragmentos de código en el código (Visual Basic).

En el ejemplo siguiente se indica cómo se llama a la propiedad predeterminada myProperty en la clase class1. Las tres instrucciones de asignación almacenan valores en myProperty y la llamada 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 Item (Propiedad, objeto Collection) en diversas clases de colección.

Programación eficaz

Las propiedades predeterminadas pueden producir una pequeña reducción en los caracteres del 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 éstas, no puede estar seguro de si esta referencia tiene acceso a la clase o estructura en sí, o a una propiedad predeterminada. Esto puede conducir a errores del compilador o a ligeros errores lógicos en tiempo de ejecución.

Puede reducir levemente las posibilidades de errores de propiedades predeterminadas utilizando siempre Option Strict (Instrucción) para establecer la comprobación de tipos del compilador en On.

Si está pensando en utilizar una clase o estructura en el código, debe determinar si tiene una propiedad predeterminada, y si es así, cómo se llama.

Debido a estas desventajas, debería considerar no definir propiedades predeterminadas. Para una mejor lectura del código, debería considerar asimismo hacer siempre una referencia explícita a todas las propiedades, incluso a las propiedades predeterminadas.

Vea también

Tareas

Cómo: Crear una propiedad

Cómo: Declarar una propiedad con niveles de acceso mixtos

Cómo: Llamar a un procedimiento de propiedad

Cómo: Establecer un valor en una propiedad

Cómo: Obtener un valor de una propiedad

Conceptos

Procedimientos de propiedad

Argumentos y parámetros de procedimiento

Cambios en las propiedades predeterminadas para usuarios de Visual Basic 6.0

Diferencias entre propiedades y variables en Visual Basic

Referencia

Property (Instrucción)

Default (Visual Basic)