Procedimientos de propiedad (Visual Basic)
Un procedimiento de propiedad es una serie de instrucciones de Visual Basic que manipulan una propiedad personalizada en un módulo, una clase o una estructura. Los procedimientos de propiedad también se conocen como descriptores de acceso de propiedad.
Visual Basic proporciona los siguientes procedimientos de propiedad:
- Un procedimiento
Get
devuelve el valor de una propiedad. Se le llama cuando se accede a la propiedad en una expresión. - Un procedimiento
Set
establece una propiedad en un valor, incluida una referencia de objeto. Se le llama cuando se asigna un valor a la propiedad.
Normalmente, los procedimientos de propiedad se definen en pares, con las instrucciones Get
y Set
, pero se puede definir cada procedimiento independientemente si la propiedad es de solo lectura (Get (Instrucción)) o de solo escritura (Instrucción Set).
Puede omitir el Get
procedimiento y Set
al usar una propiedad implementada de forma automática. Para obtener más información, consulte Propiedades implementadas automáticamente.
Puede definir propiedades en clases, estructuras y módulos. Las propiedades son Public
de manera predeterminada, lo que significa que se las puede llamar desde cualquier lugar de la aplicación que pueda acceder al contenedor de la propiedad.
Para revisar una comparación de propiedades y variables, vea Diferencias entre propiedades y variables en Visual Basic.
Sintaxis de declaración
Una propiedad se define mediante un bloque de código incluido entre Property (instrucción) y la instrucción End Property
. Dentro de este bloque, cada procedimiento de propiedad aparece como un bloque interno incluido en una instrucción de declaración (Get
o Set
) y la declaración End
correspondiente.
La sintaxis para declarar una propiedad y sus procedimientos es la siguiente:
[Default] [Modifiers] Property PropertyName[(ParameterList)] [As DataType]
[AccessLevel] Get
' Statements of the Get procedure.
' The following statement returns an expression as the property's value.
Return Expression
End Get
[AccessLevel] Set[(ByVal NewValue As DataType)]
' Statements of the Set procedure.
' The following statement assigns newvalue as the property's value.
LValue = NewValue
End Set
End Property
' - or -
[Default] [Modifiers] Property PropertyName [(ParameterList)] [As DataType]
Los elementos Modifiers
pueden especificar el nivel de acceso e información relacionada con la sobrecarga, la invalidación, el uso compartido y el sombreado, así como si la propiedad es de solo lectura o de solo escritura. El elemento AccessLevel
del procedimiento Get
o Set
puede ser cualquier nivel más restrictivo que el nivel de acceso especificado en la propia propiedad. Para obtener más información, vea Property (instrucción).
Tipo de datos
El tipo de datos de una propiedad y el nivel de acceso principal se definen en la instrucción Property
, no en los procedimientos de propiedad. Una propiedad solo puede tener un tipo de datos. Por ejemplo, no se puede definir una propiedad que almacene un valor Decimal
pero recupere un valor Double
.
Nivel de acceso
Pero se puede definir un nivel de acceso principal en una propiedad y restringir aún más el nivel de acceso en uno de sus procedimientos de propiedad. Por ejemplo, puede definir una propiedad Public
y luego un procedimiento Private Set
. El procedimiento Get
sigue siendo Public
. Puede cambiar el nivel de acceso en solo uno de los procedimientos de una propiedad, y solo puede hacer que sea más restrictivo que el nivel de acceso principal. Para obtener más información, vea Procedimiento para declarar una propiedad con niveles de acceso mixtos.
Declaración de parámetros
Cada parámetro se declara de la misma manera que los Subprocedimientos, salvo que el mecanismo de paso debe ser ByVal
.
La sintaxis de cada parámetro de la lista de parámetros es la siguiente:
[Optional] ByVal [ParamArray] parametername As datatype
Si el parámetro es opcional, también debe proporcionar un valor predeterminado como parte de su declaración. La sintaxis para especificar un valor predeterminado es la siguiente:
Optional ByVal parametername As datatype = defaultvalue
Valor de propiedad
En un procedimiento Get
, el valor devuelto se proporciona a la expresión de llamada como valor de la propiedad.
En un procedimiento Set
, el nuevo valor de propiedad se pasa al parámetro de la instrucción Set
. Si declara explícitamente un parámetro, debe declararlo con el mismo tipo de datos que la propiedad. Si no declara un parámetro, el compilador usa el parámetro implícito Value
para representar el nuevo valor que se va a asignar a la propiedad.
Sintaxis de llamada
Para invocar a un procedimiento de propiedad de forma implícita, haga referencia a la propiedad. Use el nombre de la propiedad de la misma manera que usaría el nombre de una variable, salvo que debe proporcionar valores para todos los argumentos que no son opcionales y debe incluir la lista de argumentos entre paréntesis. Si no se proporciona ningún argumento, opcionalmente se pueden omitir los paréntesis.
La sintaxis de una llamada implícita a un procedimiento Set
es la siguiente:
propertyname[(argumentlist)] = expression
La sintaxis de una llamada implícita a un procedimiento Get
es la siguiente:
lvalue = propertyname[(argumentlist)]
Do While (propertyname[(argumentlist)] > expression)
Ilustración de declaración y llamada
La propiedad siguiente almacena un nombre completo como dos nombres constituyentes, el nombre y el apellido. Cuando el código de llamada lee fullName
, el procedimiento Get
combina los dos nombres constituyentes y devuelve el nombre completo. Cuando el código de llamada asigna un nuevo nombre completo, el procedimiento Set
intenta dividirlo en dos nombres constituyentes. Si no encuentra un espacio, lo almacena todo como nombre.
Dim firstName, lastName As String
Property fullName() As String
Get
If lastName = "" Then
Return firstName
Else
Return firstName & " " & lastName
End If
End Get
Set(ByVal Value As String)
Dim space As Integer = Value.IndexOf(" ")
If space < 0 Then
firstName = Value
lastName = ""
Else
firstName = Value.Substring(0, space)
lastName = Value.Substring(space + 1)
End If
End Set
End Property
En el ejemplo siguiente se muestran llamadas típicas a los procedimientos de propiedad de fullName
:
fullName = "MyFirstName MyLastName"
MsgBox(fullName)
Consulte también
- Procedimientos
- Procedimientos de función
- Procedimientos de operador
- Argumentos y parámetros de procedimiento
- Diferencias entre propiedades y variables en Visual Basic
- Procedimiento para crear una propiedad
- Procedimiento para llamar a un procedimiento de propiedad
- Cómo: Declarar y llamar a una propiedad predeterminada en Visual Basic
- Procedimiento para establecer un valor en una propiedad
- Procedimiento para obtener un valor de una propiedad