Instrucción Set (Visual Basic)
Declara un procedimiento de propiedad Set
que se utiliza para asignar un valor a una propiedad.
Sintaxis
[ <attributelist> ] [ accessmodifier ] Set [([ByVal value [ As datatype ]])]
[ statements ]
End Set
Partes
attributelist
Opcional. Consulte Lista de atributos.
accessmodifier
Opcional como máximo en una de las instrucciones Get
y Set
de esta propiedad. Puede ser uno de los siguientes:
Vea Access levels in Visual Basic.
value
Opcional. Parámetro que contiene el nuevo valor de la propiedad. Si no se proporciona (es decir, si la lista de parámetros no está presente o está vacía), se define un parámetro implícito denominado value
. El tipo de datos de este parámetro implícito es el tipo de datos de la propiedad donde se declara esta instrucción Set
.
datatype
Obligatorio si value
está presente y Option Strict
es On
. No puede estar presente si value
no se proporciona. Tipo de datos del parámetro value
. El tipo de datos especificado debe ser el mismo que el de la propiedad donde se declara esta instrucción Set
.
statements
Opcional. Una o varias instrucciones que se ejecutan cuando se llama al procedimiento de propiedad Set
.
End Set
Necesario. Finaliza la definición del procedimiento de propiedad Set
.
Comentarios
Cada propiedad debe tener un procedimiento de propiedad Set
, a menos que la propiedad esté marcada como ReadOnly
. El procedimiento Set
se usa para establecer el valor de la propiedad.
Visual Basic llama automáticamente al procedimiento Set
de una propiedad cuando una instrucción de asignación proporciona 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 se proporciona un parámetro para Set
, el entorno de desarrollo integrado (IDE) usa un parámetro implícito denominado value
. El 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
.
El cuerpo de la declaración de propiedad solo puede contener los procedimientos Get
y Set
de la propiedad entre la instrucción Property y la instrucción End Property
. No puede almacenar nada más que 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 podrá acceder a él. El enfoque habitual consiste en almacenar el valor en una variable Private declarada en el mismo nivel que la propiedad. Debe definir un procedimiento Set
dentro de la propiedad a la que se aplica.
El procedimiento Set
tiene como valor predeterminado el nivel de acceso de su propiedad contenedora, a menos que se use accessmodifier
en la instrucción Set
.
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
Get
oSet
, 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 procedimientoSet
comoPrivate
, pero noPublic
.Si va a definir una propiedad
WriteOnly
, el procedimientoSet
representa toda la propiedad. No se puede declarar un nivel de acceso diferente paraSet
, porque eso establecería dos niveles de acceso para la propiedad.
Comportamiento
Devolución desde un procedimiento de propiedad. Cuando el procedimiento
Set
vuelve al código de llamada, la ejecución continúa siguiendo la instrucción que proporcionó el valor que se va a almacenar.Los procedimientos de propiedad
Set
pueden volver mediante la instrucción Return o la instrucción Exit.Las instrucciones
Exit Property
yReturn
provocan una salida inmediata de un procedimiento de propiedad. Puede aparecer cualquier número de instruccionesExit Property
yReturn
en cualquier parte del procedimiento, y se pueden mezclar instruccionesExit Property
yReturn
.
Ejemplo
En el ejemplo siguiente se usa la instrucción Set
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