Property Statement
Declara el nombre de una propiedad y los procedimientos de propiedad usados 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
attributelistOpcional. Lista de atributos que se aplican a esta propiedad o
GetSetprocedimiento. Vea Lista de atributos.DefaultOpcional. Especifica que esta propiedad es la propiedad predeterminada para la clase o estructura en la que se define. Las propiedades predeterminadas deben aceptar parámetros y se pueden establecer y recuperar sin especificar el nombre de propiedad. Si declara la propiedad como
Default, no puede usar en la propiedad ni en ninguno de susPrivateprocedimientos de propiedad.accessmodifierOpcional en la
Propertyinstrucción y en como máximo una de las instrucciones yGetSet. Puede ser uno de los siguientes:Consulte Niveles de acceso en Visual Basic.
propertymodifiersOpcional. Puede ser uno de los siguientes:
MustOverride OverridesNotOverridable Overrides
SharedOpcional. Consulte Compartido.
ShadowsOpcional. Vea Sombras.
ReadOnlyOpcional. Vea ReadOnly.
WriteOnlyOpcional. Vea WriteOnly.
IteratorOpcional. Vea Iterator.
nameNecesario. Nombre de la propiedad. Vea Declared Element Names.
parameterlistOpcional. Lista de nombres de variables locales que representan los parámetros de esta propiedad y posibles parámetros adicionales del
Setprocedimiento. Vea Lista de parámetros.returntypeObligatorio si
Option StrictesOn. Tipo de datos del valor devuelto por esta propiedad.ImplementsOpcional. Indica que esta propiedad implementa una o varias propiedades, cada una definida en una interfaz implementada por la clase o estructura que contiene esta propiedad. Vea Implements (Instrucción).
implementslistEs necesario si se proporciona
Implements. Lista de propiedades que se implementan.implementedproperty [ , implementedproperty ... ]Cada
implementedpropertytiene la sintaxis y las partes siguientes:interface.definednameParte Descripción interfaceNecesario. Nombre de una interfaz implementada por la clase o estructura que contiene esta propiedad. definednameNecesario. Nombre por el que se define la propiedad en interface.GetOpcional. Obligatorio si la propiedad está marcada
ReadOnlycomo . Inicia unGetprocedimiento de propiedad que se usa para devolver el valor de la propiedad . LaGetinstrucción no se usa con propiedades implementadas automáticamente.statementsOpcional. Bloque de instrucciones que se ejecutarán dentro del
GetprocedimientoSeto .End GetFinaliza el procedimiento
Getde propiedad.SetOpcional. Obligatorio si la propiedad está marcada
WriteOnlycomo . Inicia unSetprocedimiento de propiedad que se usa para almacenar el valor de la propiedad . LaSetinstrucción no se usa con propiedades implementadas automáticamente.End SetFinaliza el procedimiento
Setde propiedad.End PropertyFinaliza la definición de esta propiedad.
Comentarios
La Property instrucción presenta la declaración de una propiedad. Una propiedad puede tener un Get procedimiento (solo lectura), Set un procedimiento (solo escritura) o ambos (lectura y escritura). Puede omitir el Get procedimiento y al usar una propiedad implementada Set automáticamente. Para obtener más información, vea Propiedades implementadas automáticamente.
Solo puede usar Property en el nivel de clase. Esto significa que el contexto de declaración de una propiedad debe ser una clase, estructura, módulo o interfaz, y no puede ser un archivo de código fuente, un espacio de nombres, un procedimiento o un bloque. Para obtener más información, vea Declaration Contexts and Default Access Levels (Contextos de declaración y niveles de acceso predeterminados).
De forma predeterminada, las propiedades usan el acceso público. Puede ajustar el nivel de acceso de una propiedad con un modificador de acceso en la instrucción y, opcionalmente, puede ajustar uno de sus procedimientos de propiedad a un nivel de Property acceso más restrictivo.
Visual Basic pasa un parámetro al procedimiento Set durante las asignaciones de propiedades. Si no proporciona un parámetro para , el entorno de desarrollo integrado Set (IDE) usa 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 se devuelve cada vez que se Get llama al procedimiento.
Reglas
Niveles de acceso mixtos. Si va a definir una propiedad de lectura y escritura, opcionalmente puede especificar un nivel de acceso diferente para el procedimiento o
GetSet, pero no ambos. Si 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 declaraFriend, puede declarar el procedimiento , pero noSetPrivatePublic.Si va a definir una
ReadOnlypropiedad o , el procedimiento de propiedad única ( o ,WriteOnlyGetSetrespectivamente) representa toda la propiedad. No se puede declarar un nivel de acceso diferente para este procedimiento, porque esto establecería dos niveles de acceso para la propiedad .Tipo de valor devuelto. La
Propertyinstrucción 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 ,
returntypela propiedad devuelveObject.Implementación. Si esta propiedad usa la palabra clave , la clase o estructura que contiene debe tener una instrucción inmediatamente después
Implementsde su instrucción oImplementsClassStructure. LaImplementsinstrucción debe incluir cada interfaz especificada enimplementslist. Sin embargo, el nombre por el que una interfaz define (en ) no tiene que ser el mismo que el nombrePropertydefinednamede esta propiedad (enname).
Comportamiento
Devolver desde un procedimiento de propiedad. Cuando el procedimiento o vuelve al código de llamada, la ejecución continúa con la instrucción que
Getsigue a la instrucción que loSetinvocó.Las
Exit Propertyinstrucciones y provocan una salida inmediata de un procedimiento deReturnpropiedad. Cualquier número de instrucciones y puede aparecer en cualquierExit PropertyReturnparte del procedimiento, y puede mezclarExit Propertyinstrucciones yReturn.Valor devuelto. Para devolver un valor de un procedimiento, puede asignar el valor al nombre de
Getpropiedad o incluirlo en unaReturninstrucción . En el ejemplo siguiente se asigna el valor devuelto al nombre de propiedad y, aquoteForTheDaycontinuación, se usaExit Propertyla instrucción para devolver.Private quoteValue As String = "No quote assigned yet."ReadOnly Property QuoteForTheDay() As String Get QuoteForTheDay = quoteValue Exit Property End Get End PropertySi usa sin asignar un valor a , el procedimiento
Exit Propertydevuelve el valor predeterminado para el tipo de datos de lanameGetpropiedad.La instrucción asigna al mismo tiempo el valor devuelto
Returndel procedimiento y sale delGetprocedimiento. 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 ejemplo siguiente 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