Compartilhar via


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 procedimento Set, 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 declarada Friend, você poderá declarar o procedimento SetPrivate, mas não Public.

    Se você estiver definindo uma propriedade WriteOnly, o procedimento Set representará toda a propriedade. Você não pode declarar um nível de acesso diferente para Set, 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 e Return causam uma saída imediata de um procedimento de propriedade. Qualquer número de instruções Exit Property e Return podem aparecer em qualquer lugar no procedimento, e você pode misturar instruções Exit Property e Return.

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

Confira também