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:

    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.

  • 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

Conceptos

Propiedades predeterminadas

Referencia

Get (Instrucción)

Instrucción Set (Visual Basic)

Lista de parámetros