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
Declare la propiedad de la manera normal. No especifique las palabras clave
Shared
niPrivate
.Incluya la palabra clave
Default
en la declaración de propiedad.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
Declare una variable del tipo de clase o estructura contenedora.
Dim x As New class1(3)
Use solo el nombre de la variable en una expresión en la que normalmente incluiría el nombre de la propiedad.
MsgBox(x)
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))
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))
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"
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
- Procedimientos de propiedad
- Argumentos y parámetros de procedimiento
- Property Statement
- Valor predeterminado
- Diferencias entre propiedades y variables en Visual Basic
- Procedimiento para crear una propiedad
- Procedimiento para declarar una propiedad con niveles de acceso mixtos
- Procedimiento para llamar a un procedimiento de propiedad
- Procedimiento para establecer un valor en una propiedad
- Procedimiento para obtener un valor de una propiedad