Instrucción Set (Visual Basic)

Declara un procedimiento Set de propiedad utilizado para asignar un valor a una propiedad.

Sintaxis

[ <attributelist> ] [ accessmodifier ] Set (ByVal value [ As datatype ])  
    [ statements ]  
End Set  

Partes

attributelist
Opcional. Vea Lista de atributos.

accessmodifier
Opcional como máximo en una de las Get instrucciones y de esta Set propiedad. Puede ser uno de los siguientes:

Consulte Niveles de acceso en Visual Basic.

value
Necesario. Parámetro que contiene el nuevo valor de la propiedad .

datatype
Obligatorio si Option Strict es On . Tipo de datos del value parámetro. El tipo de datos especificado debe ser el mismo que el tipo de datos de la propiedad donde se Set declara esta instrucción.

statements
Opcional. Una o varias instrucciones que se ejecutan cuando se llama Set al procedimiento de propiedad.

End Set
Necesario. Finaliza la definición del procedimiento Set de propiedad.

Comentarios

Cada propiedad debe tener un procedimiento de propiedad a Set menos que la propiedad esté marcada como ReadOnly . El Set procedimiento se usa para establecer el valor de la propiedad .

Visual Basic llama automáticamente al procedimiento de una propiedad cuando una instrucción de asignación proporciona Set un valor que se va a almacenar en la propiedad .

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 . El 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.

El cuerpo de la declaración de propiedad solo puede contener los procedimientos y de la Get propiedad entre la instrucción Property Set y la End Property instrucción . No puede almacenar nada que no sea esos procedimientos. En concreto, no puede almacenar el valor actual de la propiedad. Debe almacenar este valor fuera de la propiedad , porque si lo almacena dentro de cualquiera de los procedimientos de propiedad, el otro procedimiento de propiedad no puede acceder a él. El enfoque habitual es almacenar el valor en una variable Private declarada en el mismo nivel que la propiedad . Debe definir un Set procedimiento dentro de la propiedad a la que se aplica.

El procedimiento tiene como valor predeterminado el nivel de acceso de su propiedad que lo contiene, a menos Set que se use en la instrucción accessmodifier Set .

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 WriteOnly propiedad, el Set procedimiento representa toda la propiedad. No se puede declarar un nivel de acceso diferente para Set , porque se establecerían dos niveles de acceso para la propiedad .

Comportamiento

  • Devolver de un procedimiento de propiedad. Cuando el procedimiento vuelve al código de llamada, la ejecución continúa siguiendo Set la instrucción que proporcionó el valor que se va a almacenar.

    Set Los procedimientos de propiedad pueden devolver mediante la instrucción Return o la instrucción Exit.

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

Ejemplo

En el ejemplo siguiente se usa Set la instrucción para establecer el valor de una propiedad .

Class propClass
    Private propVal As Integer
    Property Prop1() As Integer
        Get
            Return propVal
        End Get
        Set(ByVal value As Integer)
            propVal = value
        End Set
    End Property
End Class

Consulta también