Property (Instrucción)
Actualización: noviembre 2007
Declara el nombre de una propiedad y los procedimientos de propiedades que se utilizan para almacenar y recuperar el valor de la propiedad.
[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ]
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
Partes
attributelist
Opcional. Lista de atributos aplicables a esta propiedad o procedimiento Get o Set. Vea Lista de atributos.Default
Opcional. Especifica que esta propiedad es la propiedad predeterminada para la clase o estructura en que está definida. Las propiedades predeterminadas deben aceptar parámetros y se pueden establecer y recuperar sin especificar el nombre de la propiedad. Si declara la propiedad como Default, no puede utilizar Private en la propiedad ni en ninguno de sus procedimientos de propiedad.accessmodifier
Opcional en la instrucción Property y en a lo sumo una de las instrucciones Get y Set. Puede ser una de las siguientes:propertymodifiers
Opcional. Puede ser una de las siguientes:MustOverride Overrides
NotOverridable Overrides
Shared
Opcional. Vea Shared (Visual Basic).Shadows
Opcional. Vea Shadows.ReadOnly
Opcional. Vea ReadOnly (Visual Basic).WriteOnly
Opcional. Vea WriteOnly.name
Obligatorio. Nombre de la propiedad. Vea Nombres de elementos declarados.parameterlist
Opcional. Lista de nombres de variable local que representan los parámetros de esta propiedad y posibles parámetros adicionales del procedimiento Set. Vea Lista de parámetros.returntype
Obligatorio si OptionStrict es On. Tipos de datos del valor devuelto por esta propiedad.Implements
Opcional. Indica que esta propiedad implementa una o más propiedades, cada una de ellas definida en una interfaz implementada por la clase o estructura contenedora de esta propiedad. Vea Implements (Instrucción).implementslist
Requerido si se suministra Implements. Lista de las propiedades que se implementan.implementedproperty [ , implementedproperty ... ]
Cada implementedproperty tiene la sintaxis y las partes siguientes:
interface.definedname
Parte
Descripción
interface
Obligatorio. Nombre de una interfaz implementada por la clase o estructura contenedora de esta propiedad.
definedname
Obligatorio. Nombre por el que se define la propiedad en interface.
Get
Obligatorio a menos que la propiedad esté marcada como WriteOnly. Inicia un procedimiento de propiedad Get que se usa para devolver el valor de la propiedad.statements
Opcional. Bloque de las instrucciones que se deben ejecutar dentro del procedimiento Get o Set.End Get
Termina el procedimiento de propiedad Get.Set
Obligatorio a menos que la propiedad esté marcada como ReadOnly. Inicia un procedimiento de propiedad Set que se usa para almacenar el valor de la propiedad.End Set
Termina el procedimiento de propiedad Set.End Property
Termina la definición de esta propiedad.
Comentarios
La instrucción Property introduce la declaración de una propiedad. Una propiedad puede tener un procedimiento Get (sólo lectura), un procedimiento Set (sólo escritura), o ambos (de lectura y escritura).
Sólo puede utilizar Property en el nivel de módulo. Esto significa que el contexto de declaración de una propiedad debe ser una clase, estructura, módulo o interfaz, y no un archivo de código fuente, un espacio de nombres, un procedimiento ni un bloque. Para obtener más información, vea Contextos de declaración y niveles de acceso predeterminados.
De forma predeterminada, las propiedades usan acceso público. Puede ajustar el nivel de acceso de una propiedad mediante un modificador de acceso de la instrucción Property y, opcionalmente, ajustar uno de sus procedimientos de propiedad en un nivel de acceso más restrictivo.
Visual Basic pasa un parámetro al bloque Set durante las asignaciones de propiedades. Si no se especifica un parámetro para Set, el entorno de desarrollo integrado (IDE) utiliza un parámetro implícito denominado value. Este parámetro contiene el valor que se va a asignar a la propiedad. Normalmente, este valor se almacena en una variable local privada y lo devuelve cada vez que se llama al procedimiento Get.
Reglas
Niveles de acceso mixto. Si está definiendo una propiedad de lectura y escritura, tiene la opción de especificar un nivel de acceso distinto para el procedimiento Get o para el procedimiento Set, pero no para ambos. Si así lo hace, el nivel de acceso del procedimiento debe ser más restrictivo que el nivel de acceso de la propiedad. Por ejemplo, si la propiedad se declara como Friend, puede declarar el procedimiento Set como Private, pero no como Public.
Si está definiendo una propiedad ReadOnly o WriteOnly, el procedimiento de propiedad único (Get o Set, respectivamente) representa toda la propiedad. No puede declarar un nivel de acceso diferente para este tipo de procedimiento, porque se establecerían 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. Puede especificar cualquier tipo de datos o el nombre de una enumeración, estructura, clase o interfaz.
Si no especifica returntype, la propiedad devuelve Object.
Implementación. Si esta propiedad utiliza la palabra clave Implements, la clase o estructura contenedora deben tener una instrucción Implements que sigue inmediatamente a su instrucción Class o Structure. La instrucción Implements debe incluir cada interfaz especificada en implementslist. Sin embargo, el nombre con el que una interfaz define la Property (en definedname) no tiene por qué ser el mismo que el nombre de esta propiedad (en name).
Comportamiento
Volver de un procedimiento de propiedad. Cuando el procedimiento Get o Set vuelve al código que realiza la llamada, la ejecución continúa con la instrucción siguiente a la instrucción que la llamó.
Las instrucciones Exit Property y Return provocan una salida inmediata de un procedimiento de propiedad. Puede aparecer cualquier cantidad de instrucciones Exit Property y Return en cualquier parte del procedimiento, y se puede combinar instrucciones Exit Property y Return.
Valor devuelto. Para devolver un valor desde un procedimiento Get, puede asignar el valor al nombre de propiedad o incluirlo en una instrucción Return. El ejemplo siguiente asigna el valor devuelto al nombre de propiedad quoteForTheDay y, a continuación, utiliza la instrucción Exit 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 utiliza Exit Property sin asignar un valor a name, el procedimiento Get devuelve el valor predeterminado para el tipo de datos de la propiedad.
Al mismo tiempo, la instrucción Return asigna el valor devuelto por el procedimiento Get y sale del procedimiento. Esto se muestra en el siguiente ejemplo.
Private quoteValue As String = "No quote assigned yet."
ReadOnly Property quoteForTheDay() As String Get Return quoteValue End Get End Property
Ejemplo
El siguiente ejemplo 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
Vea también
Tareas
Cómo: Agregar campos y propiedades a una clase