Property (Instrucción)

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
- or -
[ <attributelist> ] [ Default ] [ accessmodifier ] 
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ] 
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]

Partes

Término

Definición

attributelist

Opcional. Lista de atributos aplicables a esta propiedad o procedimiento Get o Set. Vea la 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:

Vea Niveles de acceso en Visual Basic.

propertymodifiers

Opcional. Puede ser una de las siguientes:

Shared

Opcional. Vea Shared (Visual Basic).

Shadows

Opcional. Vea Shadows (Visual Basic).

ReadOnly

Opcional. Vea ReadOnly (Visual Basic).

WriteOnly

Opcional. Vea WriteOnly (Visual Basic).

name

Obligatorio. Nombre de la propiedad. Vea Nombres de elementos declarados (Visual Basic).

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 (Visual Basic).

returntype

Requerido si Option Strict 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

ParteDescripció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

Opcional. Obligatorio si 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

Opcional. Obligatorio si 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). Puede omitir el procedimiento Get y Set al utilizar una propiedad autoimplementada. Para obtener más información, vea Propiedades implementadas automáticamente (Visual Basic).

Sólo puede utilizar 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 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 (Visual Basic).

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 procedimiento 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. Generalmente, almacena este valor en una variable local privada y lo devuelve cada vez que se llama al procedimiento Get.

Reglas

  • Niveles mixtos de acceso. Si define una propiedad de lectura y escritura, puede especificar opcionalmente un nivel de acceso diferente para el procedimiento Get o Set, pero no para ambos. Si hace esto, 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).

Behavior

  • 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 invocó.

    Las instrucciones Exit Property y Return provocan una salida inmediata de un procedimiento de propiedad. Puede aparecer cualquier número de instrucciones Exit Property y Return en cualquier parte del procedimiento y 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

Referencia

Get (Instrucción)

Instrucción Set (Visual Basic)

Lista de parámetros (Visual Basic)

Default (Visual Basic)

Conceptos

Propiedades implementadas automáticamente (Visual Basic)

Otros recursos

Objetos y clases de Visual Basic