Instrução Set (Visual Basic)
Declara um procedimento de propriedade Set
usado para atribuir o valor de uma propriedade.
Sintaxe
[ <attributelist> ] [ accessmodifier ] Set [([ByVal value [ As datatype ]])]
[ statements ]
End Set
Partes
attributelist
Opcional. Veja Lista de atributo.
accessmodifier
Opcional em no máximo uma das instruções Get
e Set
nesta propriedade. Um dos seguintes pode ser feito:
Consulte Níveis de acesso no Visual Basic.
value
Opcional. Parâmetro que contém o novo valor da propriedade. Se não for dado (ou seja, se a lista de parâmetros não estiver presente ou estiver vazia), um parâmetro implícito chamado value
será definido. O tipo de dados desse parâmetro implícito é o tipo de dados da propriedade em que essa instrução Set
é declarada.
datatype
Obrigatório se value
estiver presente e Option Strict
for On
. Não pode estar presente se value
não for fornecido. Tipo de dados do parâmetro value
. O tipo de dados especificado deve ser igual ao tipo de dados da propriedade em que esta instrução Set
é declarada.
statements
Opcional. Uma ou mais instruções que são executadas quando o procedimento de propriedade Set
é chamado.
End Set
Obrigatórios. Encerra a definição do procedimento de propriedade Set
.
Comentários
Cada propriedade deve ter um procedimento de propriedade Set
, a menos que a propriedade seja marcada ReadOnly
. O procedimento Set
é usado para definir o valor da propriedade.
O Visual Basic chama automaticamente o procedimento de Set
uma propriedade quando a instrução de atribuição fornece um valor a ser armazenado na propriedade.
O Visual Basic passa um parâmetro para o procedimento Set
durante as atribuições de propriedade. Se você não fornecer um parâmetro para Set
, o IDE (ambiente de desenvolvimento integrado) usa um parâmetro implícito chamado value
. O parâmetro mantém o valor a ser atribuído à propriedade. Normalmente, você armazena esse valor em uma variável local privada e o retorna sempre que o procedimento Get
é chamado.
O corpo da declaração de propriedade pode conter apenas os procedimentos Get
e Set
da propriedade entre a Declaração de Propriedade e a instrução End Property
. Ele não pode armazenar nada além desses procedimentos. Em especial, ele não pode armazenar o valor atual da propriedade. Você deve armazenar esse valor fora da propriedade, porque se você armazená-lo dentro de qualquer um dos procedimentos de propriedade, o outro procedimento de propriedade não poderá acessá-lo. A abordagem usual é armazenar o valor em uma variável Privada declarada no mesmo nível da propriedade. Você deve definir um procedimento Set
dentro da propriedade à qual ele se aplica.
O procedimento Set
é padrão para o nível de acesso da propriedade que o contém, a menos que você use accessmodifier
na instrução Set
.
Regras
Níveis de acesso mistos. Se você estiver definindo uma propriedade de leitura/gravação, opcionalmente poderá especificar um nível de acesso diferente para o procedimento
Get
ou o procedimentoSet
, mas não ambos. Se você fizer isso, o nível de acesso ao procedimento deverá ser mais restritivo do que o nível de acesso da propriedade. Por exemplo, se a propriedade for declaradaFriend
, você poderá declarar o procedimentoSet
Private
, mas nãoPublic
.Se você estiver definindo uma propriedade
WriteOnly
, o procedimentoSet
representará toda a propriedade. Você não pode declarar um nível de acesso diferente paraSet
, pois isso definiria dois níveis de acesso para a propriedade.
Comportamento
Retorno de um procedimento de propriedade. Quando o procedimento
Set
retorna ao código de chamada, a execução continua seguindo a instrução que forneceu o valor a ser armazenado.Os procedimentos de propriedade
Set
podem retornar usando a Instrução Return ou a Instrução Exit.As instruções
Exit Property
eReturn
causam uma saída imediata de um procedimento de propriedade. Qualquer número de instruçõesExit Property
eReturn
podem aparecer em qualquer lugar no procedimento, e você pode misturar instruçõesExit Property
eReturn
.
Exemplo
O exemplo a seguir usa a instrução Set
para definir o valor de uma propriedade.
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