Property Statement
Declara el nombre de una propiedad y los procedimientos de propiedad utilizados para almacenar y recuperar el valor de la propiedad.
Sintaxis
[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ] [ Iterator ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]
[ <attributelist> ] [ accessmodifier ] Get
[ statements ]
End Get
[ <attributelist> ] [ accessmodifier ] Set ( ByVal value As returntype [, parameterlist ] )
[ statements ]
End Set
End Property
- or -
[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]
Partes
attributelist
Opcional. Lista de atributos correspondientes a esta propiedad o a los procedimientos
Get
oSet
. Vea Lista de atributos.Default
Opcional. Especifica que esta propiedad es la propiedad predeterminada de la clase o la estructura donde se define. Las propiedades predeterminadas deben aceptar parámetros y se pueden establecer y recuperar sin especificar el nombre de la propiedad. Si la propiedad se declara como
Default
,Private
no puede usarse en la propiedad ni en ninguno de sus procedimientos de propiedad.accessmodifier
Opcional en la instrucción
Property
y al menos en una de las instruccionesGet
ySet
. Puede ser uno de los siguientes:propertymodifiers
Opcional. Puede ser uno de los siguientes:
MustOverride Overrides
NotOverridable Overrides
Shared
Opcional. Vea Shared.
Shadows
Opcional. Consulte Shadows.
ReadOnly
Opcional. Vea ReadOnly.
WriteOnly
Opcional. Vea WriteOnly.
Iterator
Opcional. Vea Iterator.
name
Necesario. Nombre de la propiedad. Vea Declared Element Names.
parameterlist
Opcional. Lista de nombres de variables locales que representan los parámetros de esta propiedad, y posibles parámetros adicionales del procedimiento
Set
. Vea Lista de parámetros.returntype
Necesario si
Option Strict
esOn
. Tipo de datos del valor devuelto por esta propiedad.Implements
Opcional. Indica que esta propiedad implementa una o varias propiedades, cada una definida en una interfaz implementada por la estructura o clase contenedora de esta propiedad. Vea Implements (Instrucción).
implementslist
Es necesario si se proporciona
Implements
. Lista de propiedades que se implementan.implementedproperty [ , implementedproperty ... ]
Cada
implementedproperty
tiene la sintaxis y las partes siguientes:interface.definedname
Parte Descripción interface
Necesario. Nombre de una interfaz implementada por la estructura o clase contenedora de esta propiedad. definedname
Necesario. Nombre por el que se define la propiedad en interface
.Get
Opcional. Necesario si la propiedad está marcada como
ReadOnly
. Inicia un procedimiento de propiedadGet
que se usa para devolver el valor de la propiedad. LaGet
instrucción no se usa con propiedades implementadas automáticamente.statements
Opcional. Bloque de instrucciones que se ejecutarán en los procedimientos
Get
oSet
.End Get
Finaliza el procedimiento de propiedad
Get
.Set
Opcional. Necesario si la propiedad está marcada como
WriteOnly
. Inicia un procedimiento de propiedadSet
que se usa para almacenar el valor de la propiedad. LaSet
instrucción no se usa con propiedades implementadas automáticamente.End Set
Finaliza el procedimiento de propiedad
Set
.End Property
Finaliza la definición de esta propiedad.
Comentarios
La instrucción Property
incluye la declaración de una propiedad. Una propiedad puede tener un procedimiento Get
(solo lectura), un procedimiento Set
(solo escritura) o ambos (lectura y escritura). Puede omitir el Get
procedimiento y Set
al usar una propiedad implementada automáticamente. Para obtener más información, consulte Propiedades implementadas automáticamente.
Property
solo se puede usar en el nivel de clase. Esto significa que el contexto de la declaración de una propiedad debe ser una clase, una estructura, un módulo o una interfaz, y no puede ser un archivo de código fuente, un espacio de nombres, un procedimiento ni un bloque. Para obtener más información, vea Declaration Contexts and Default Access Levels (Contextos de declaración y niveles de acceso predeterminados).
Las propiedades usan el acceso público de forma predeterminada. El nivel de acceso de una propiedad se puede ajustar con un modificador de acceso en la instrucción Property
y, opcionalmente, uno de sus procedimientos de propiedad se puede ajustar a un nivel de acceso más restrictivo.
Visual Basic pasa un parámetro al procedimiento Set
durante las asignaciones de propiedades. Si no se proporciona un parámetro para Set
, el entorno de desarrollo integrado (IDE) usa un parámetro implícito denominado value
. Este parámetro contiene el valor que se va a asignar a la propiedad. Este valor suele almacenarse en una variable local privada, y se devuelve cada vez que se llama al procedimiento Get
.
Reglas
Niveles de acceso mixtos. Si va a definir una propiedad de lectura y escritura, puede especificar opcionalmente un nivel de acceso diferente para el procedimiento
Get
oSet
, pero no ambos. Si lo hace, el nivel de acceso del procedimiento debe ser más restrictivo que el de la propiedad. Por ejemplo, si la propiedad se declara comoFriend
, puede declarar el procedimientoSet
comoPrivate
, pero noPublic
.Si se va a definir una propiedad
ReadOnly
oWriteOnly
, el procedimiento de propiedad única (Get
oSet
, respectivamente) representa toda la propiedad. No se puede declarar un nivel de acceso diferente para este tipo de procedimiento, porque eso establecería dos niveles de acceso para la propiedad.Tipo de valor devuelto. La instrucción
Property
puede declarar el tipo de datos del valor que devuelve. Se puede especificar cualquier tipo de datos o el nombre de una enumeración, una estructura, una clase o una interfaz.Si no se especifica
returntype
, la propiedad devuelveObject
.Implementación. Si la propiedad usa la palabra clave
Implements
, la estructura o la clase contenedora debe tener una instrucciónImplements
que vaya inmediatamente después de su instrucciónClass
oStructure
. La instrucciónImplements
debe incluir cada interfaz especificada enimplementslist
. Sin embargo, el nombre por el que una interfaz define unaProperty
(endefinedname
) no tiene que ser el mismo que el nombre de esta propiedad (enname
).
Comportamiento
Devolución desde un procedimiento de propiedad. Cuando los procedimientos
Get
oSet
vuelven al código de llamada, la ejecución continúa con la instrucción que sigue a la instrucción que realizó la llamada.Las instrucciones
Exit Property
yReturn
provocan una salida inmediata de un procedimiento de propiedad. Puede aparecer cualquier número de instruccionesExit Property
yReturn
en cualquier parte del procedimiento, y se pueden mezclar instruccionesExit Property
yReturn
.Valor devuelto. Para devolver un valor a partir de un procedimiento
Get
, se puede asignar el valor al nombre de propiedad o incluirlo en una instrucciónReturn
. En el siguiente ejemplo se asigna el valor devuelto al nombre de propiedadquoteForTheDay
y, a continuación, se usa la instrucciónExit Property
para volver.Private quoteValue As String = "No quote assigned yet."
ReadOnly Property QuoteForTheDay() As String Get QuoteForTheDay = quoteValue Exit Property End Get End Property
Si se usa
Exit Property
sin asignar un valor aname
, el procedimientoGet
devuelve el valor predeterminado del tipo de datos de la propiedad.De manera simultánea, la instrucción
Return
asigna el valor devuelto del procedimientoGet
y sale del procedimiento. Esto se muestra en el ejemplo siguiente.Private quoteValue As String = "No quote assigned yet."
ReadOnly Property QuoteForTheDay() As String Get Return quoteValue End Get End Property
Ejemplo
En el siguiente ejemplo se declara una propiedad en una clase.
Class Class1
' Define a local variable to store the property value.
Private propertyValue As String
' Define the property.
Public Property Prop1() As String
Get
' The Get property procedure is called when the value
' of a property is retrieved.
Return propertyValue
End Get
Set(ByVal value As String)
' The Set property procedure is called when the value
' of a property is modified. The value to be assigned
' is passed in the argument to Set.
propertyValue = value
End Set
End Property
End Class