Cambios en las propiedades predeterminadas para usuarios de Visual Basic 6.0

Actualización: noviembre 2007

Visual Basic 2008 actualiza la compatibilidad de las propiedades predeterminadas para simplificar y mejorar la legibilidad.

Visual Basic 6.0

En Visual Basic 6.0, se admiten las propiedades predeterminadas en objetos. En controles Label, por ejemplo, Caption es la propiedad predeterminada, y las dos asignaciones del ejemplo siguiente son equivalentes.

Dim lbl As Label 
lbl = "Important" 
lbl.Caption = "Important" 

Aunque las propiedades predeterminadas permiten algunas abreviaciones al escribir código en Visual Basic, hay varios inconvenientes:

  • Las abreviaciones pueden dificultar la lectura del código. En el ejemplo anterior, si no está familiarizado con el control Label, no puede establecer a partir de la primera asignación si la cadena "Important" se va a almacenar directamente en la variable lbl o en una propiedad predeterminada.

  • Dado un objeto que tiene planeado utilizar en el código, no siempre resulta sencillo descubrir si posee una propiedad predeterminada y si es así, qué propiedad es.

  • Las propiedades predeterminadas hacen que la instrucción Set sea necesaria en el lenguaje Visual Basic. En el ejemplo siguiente se muestra cómo se necesita Set para indicar que se va a asignar una referencia de objeto en lugar de una propiedad predeterminada:

    Dim lbl1 As Label, lbl2 As Label 
    lbl1 = "Saving" ' Assign a value to lbl1's Caption property. 
    lbl2 = lbl1       ' Replace lbl2's Caption property with lbl1's. 
    Set lbl2 = lbl1   ' Replace lbl2 with an object reference to lbl1. 
    

Visual Basic 2008

En Visual Basic 2008 no se admiten propiedades predeterminadas a menos que acepten argumentos. Debido a este cambio en la sintaxis, no se necesitan las instrucciones Let y Set para especificar los elementos que se van a asignar y estas instrucciones no se utilizan en instrucciones de asignación. La propiedad Text reemplaza a la propiedad Caption en el control Label, y el ejemplo anterior se puede rescribir tal y como se muestra a continuación.

Dim L1, L2 As New Label   ' Both become type Label
                          ' in the new version of Visual Basic.
L1.Text = "Saving"        ' Assign Text property. 
L2.Text = L1.Text         ' Copy Text property. 
L2 = L1                   ' Copy object reference.

Let todavía es una palabra reservada en Visual Basic 2008, aunque no tiene ningún uso sintáctico. Esto ayuda a evitar la confusión con sus significados anteriores. Visual Basic 2008 utiliza la instrucción Set para los procedimientos de propiedades que establecen el valor de una propiedad.

Propiedades parametrizadas

Las propiedades predeterminadas que aceptan argumentos no son ambiguas y son compatibles con Visual Basic 2008. Las propiedades predeterminadas aparecen más comúnmente en clases de colección. En el espacio de nombres System.Windows.Forms, por ejemplo, la clase Form admite la jerarquía siguiente:

Objeto Form

   Propiedad Controls (devuelve un objeto Control.ControlCollection para este formulario)

      Objeto Control.ControlCollection (la propiedad predeterminada es Item)

         Propiedad Item (devuelve un objeto Control para un elemento de la colección)

            Objeto Control

La propiedad Controls devuelve un objeto Control.ControlCollection y la propiedad Item devuelve un objeto Control. En el ejemplo siguiente se muestran dos usos, uno válido y otro no válido, de las propiedades predeterminadas en Visual Basic 2008.

Dim F As New Form   ' Assume F has been created and initialized.
F.Controls.Item(0).Text = "Stop"  ' Valid -- no default properties used. 
F.Controls(0).Text = "Stop"  ' Valid -- Item is parameterized. 
'F(0).Text = "Stop"  ' INVALID -- Form does not have a default property. 
'F.Controls(0) = "Stop"  ' INVALID -- No default property on Control. 

Declaración de propiedades predeterminadas

En Visual Basic 2008, puede establecer una propiedad como predeterminada comenzando la declaración de ésta con la palabra clave Default. Si sobrecarga el nombre de propiedad, debe especificar Default en cada declaración de sobrecarga. No puede declarar una propiedad predeterminada como Shared o Private.

Vea también

Conceptos

Cambios en los procedimientos de propiedades para usuarios de Visual Basic 6.0

Resumen de cambios de los elementos de programación ofrecidos

Referencia

Text

Label

Instrucción Set (Visual Basic)

System.Windows.Forms

Form

Control.ControlCollection

Control

Default (Visual Basic)