Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
attributelistOpcional. Lista de atributos correspondientes a esta propiedad o a los procedimientos
GetoSet. Vea Lista de atributos.DefaultOpcional. 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,Privateno puede usarse en la propiedad ni en ninguno de sus procedimientos de propiedad. Para obtener ejemplos e instrucciones detalladas, vea Cómo: Declarar y llamar a una propiedad predeterminada en Visual Basic.accessmodifierOpcional en la instrucción
Propertyy al menos en una de las instruccionesGetySet. Puede ser uno de los siguientes:propertymodifiersOpcional. Puede ser uno de los siguientes:
MustOverride OverridesNotOverridable Overrides
SharedOpcional. Vea Shared.
ShadowsOpcional. Consulte Shadows.
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 procedimiento
Set. Las propiedades con parámetros se usan a menudo para crear indizadores o propiedades predeterminadas que permiten el acceso similar a la colección. Vea Lista de parámetrosy Cómo: Declarar y llamar a una propiedad predeterminada en Visual Basic.returntypeNecesario 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 estructura o clase contenedora de 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 estructura o clase contenedora de esta propiedad. definednameNecesario. Nombre por el que se define la propiedad en interface.GetOpcional. Necesario si la propiedad está marcada como
ReadOnly. Inicia un procedimiento de propiedadGetque 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 en los procedimientos
GetoSet.End GetFinaliza el procedimiento de propiedad
Get.SetOpcional. Necesario si la propiedad está marcada como
WriteOnly. Inicia un procedimiento de propiedadSetque se usa para almacenar el valor de la propiedad. LaSetinstrucción no se usa con propiedades implementadas automáticamente.End SetFinaliza el procedimiento de propiedad
Set.End PropertyFinaliza 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. Para obtener ejemplos detallados de niveles de acceso mixtos, vea Cómo: Declarar una propiedad con niveles de acceso mixto.
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
GetoSet, 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 procedimientoSetcomoPrivate, pero noPublic.Si se va a definir una propiedad
ReadOnlyoWriteOnly, el procedimiento de propiedad única (GetoSet, 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
Propertypuede 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ónImplementsque vaya inmediatamente después de su instrucciónClassoStructure. La instrucciónImplementsdebe 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
GetoSetvuelven 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 PropertyyReturnprovocan una salida inmediata de un procedimiento de propiedad. Puede aparecer cualquier número de instruccionesExit PropertyyReturnen cualquier parte del procedimiento, y se pueden mezclar instruccionesExit PropertyyReturn.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 propiedadquoteForTheDayy, a continuación, se usa la instrucciónExit Propertypara volver.Private quoteValue As String = "No quote assigned yet."ReadOnly Property QuoteForTheDay() As String Get QuoteForTheDay = quoteValue Exit Property End Get End PropertySi se usa
Exit Propertysin asignar un valor aname, el procedimientoGetdevuelve el valor predeterminado del tipo de datos de la propiedad.De manera simultánea, la instrucción
Returnasigna el valor devuelto del procedimientoGety 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
Propiedades parametrizadas
En el ejemplo siguiente se muestra cómo crear una propiedad parametrizada, también denominada indexador, que permite el acceso de tipo matriz a una colección:
Class SampleCollection
' Define a local collection to store strings.
Private items As New List(Of String)
' Define a parameterized property (indexer) for the collection.
Default Public Property Item(ByVal index As Integer) As String
Get
' Return the item at the specified index.
If index >= 0 AndAlso index < items.Count Then
Return items(index)
Else
Return Nothing
End If
End Get
Set(ByVal value As String)
' Set the item at the specified index.
If index >= 0 AndAlso index < items.Count Then
items(index) = value
ElseIf index = items.Count Then
' Allow adding new items at the end.
items.Add(value)
End If
End Set
End Property
' Add a Count property for convenience.
Public ReadOnly Property Count As Integer
Get
Return items.Count
End Get
End Property
' Add method to add items.
Public Sub Add(ByVal item As String)
items.Add(item)
End Sub
End Class
Para obtener ejemplos completos de uso de propiedades, como la implementación automática, los niveles de acceso mixto y los escenarios de validación, consulte Procedimientos de propiedades.
Consulte también
Tipos de propiedades y características
Escenarios de propiedades avanzadas
- Cómo: Declarar y llamar a una propiedad predeterminada en Visual Basic
- Procedimiento para declarar una propiedad con niveles de acceso mixto