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

  • attributelist

    Opcional. Lista de atributos que se aplican a esta propiedad o Get Set procedimiento. Vea Lista de atributos.

  • Default

    Opcional. 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 sus Private procedimientos de propiedad.

  • accessmodifier

    Opcional en la Property instrucción y en como máximo una de las instrucciones y Get Set . Puede ser uno de los siguientes:

    Consulte Niveles de acceso en Visual Basic.

  • propertymodifiers

    Opcional. Puede ser uno de los siguientes:

  • Shared

    Opcional. Consulte Compartido.

  • Shadows

    Opcional. Vea Sombras.

  • ReadOnly

    Opcional. Vea ReadOnly.

  • WriteOnly

    Opcional. Vea WriteOnly.

  • Iterator

    Opcional. Vea Iterator.

  • name

    Necesario. Nombre de la propiedad. Vea Declared Element Names.

  • parameterlist

    Opcional. Lista de nombres de variables locales que representan los parámetros de esta propiedad y posibles parámetros adicionales del Set procedimiento. Vea Lista de parámetros.

  • returntype

    Obligatorio si Option Strict es On . Tipo de datos del valor devuelto por esta propiedad.

  • Implements

    Opcional. 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).

  • implementslist

    Es necesario si se proporciona Implements. Lista de propiedades que se implementan.

    implementedproperty [ , implementedproperty ... ]

    Cada implementedproperty tiene la sintaxis y las partes siguientes:

    interface.definedname

    Parte Descripción
    interface Necesario. Nombre de una interfaz implementada por la clase o estructura que contiene esta propiedad.
    definedname Necesario. Nombre por el que se define la propiedad en interface .
  • Get

    Opcional. Obligatorio si la propiedad está marcada ReadOnly como . Inicia un Get procedimiento de propiedad que se usa para devolver el valor de la propiedad . La Get instrucción no se usa con propiedades implementadas automáticamente.

  • statements

    Opcional. Bloque de instrucciones que se ejecutarán dentro del Get procedimiento Set o .

  • End Get

    Finaliza el procedimiento Get de propiedad.

  • Set

    Opcional. Obligatorio si la propiedad está marcada WriteOnly como . Inicia un Set procedimiento de propiedad que se usa para almacenar el valor de la propiedad . La Set instrucción no se usa con propiedades implementadas automáticamente.

  • End Set

    Finaliza el procedimiento Set de propiedad.

  • End Property

    Finaliza 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 Get Set , 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 declara Friend , puede declarar el procedimiento , pero no Set Private Public .

    Si va a definir una ReadOnly propiedad o , el procedimiento de propiedad única ( o , WriteOnly Get Set respectivamente) 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 Property instrucció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 , returntype la propiedad devuelve Object .

  • Implementación. Si esta propiedad usa la palabra clave , la clase o estructura que contiene debe tener una instrucción inmediatamente después Implements de su instrucción o Implements Class Structure . La Implements instrucción debe incluir cada interfaz especificada en implementslist . Sin embargo, el nombre por el que una interfaz define (en ) no tiene que ser el mismo que el nombre Property definedname de esta propiedad (en name ).

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 Get sigue a la instrucción que lo Set invocó.

    Las Exit Property instrucciones y provocan una salida inmediata de un procedimiento de Return propiedad. Cualquier número de instrucciones y puede aparecer en cualquier Exit Property Return parte del procedimiento, y puede mezclar Exit Property instrucciones y Return .

  • Valor devuelto. Para devolver un valor de un procedimiento, puede asignar el valor al nombre de Get propiedad o incluirlo en una Return instrucción . En el ejemplo siguiente se asigna el valor devuelto al nombre de propiedad y, a quoteForTheDay continuación, se usa Exit Property la 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 Property
    

    Si usa sin asignar un valor a , el procedimiento Exit Property devuelve el valor predeterminado para el tipo de datos de la name Get propiedad.

    La instrucción asigna al mismo tiempo el valor devuelto Return del procedimiento y sale del Get 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 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

Consulta también