Cómo: Declarar y llamar a una propiedad predeterminada en Visual Basic
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 Default (Visual Basic).
Para declarar una propiedad predeterminada
Declare la propiedad de la manera normal.No especifique la palabra clave Shared o Private.
Incluya la palabra clave Default en la declaración de la propiedad.
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
Declare una variable de la clase contenedora o tipo de estructura.
Dim x As New class1(3)
Utilice el nombre de variable solo en una expresión donde normalmente incluiría el nombre de propiedad.
MsgBox(x)
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))
Para recuperar el valor de propiedad predeterminado, 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))
Para establecer el valor de propiedad predeterminado, 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"
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
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 la propiedad Item 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 (Visual Basic)
Cómo: Declarar una propiedad con niveles de acceso mixtos (Visual Basic)
Cómo: Llamar a un procedimiento de propiedad (Visual Basic)
Cómo: Establecer un valor en una propiedad (Visual Basic)
Cómo: Obtener un valor de una propiedad (Visual Basic)
Referencia
Conceptos
Procedimientos de propiedad (Visual Basic)