Procedimentos de propriedade (Visual Basic)
Um procedimento de propriedade é uma série de instruções do Visual Basic que manipulam uma propriedade personalizada em um módulo, classe ou estrutura. Os procedimentos de propriedade também são conhecidos como acessadores de propriedade.
O Visual Basic fornece os seguintes procedimentos de propriedade:
- Um procedimento
Get
retorna o valor de uma propriedade. Ele é chamado quando você acessa a propriedade em uma expressão. - Um procedimento
Set
define uma propriedade como valor, incluindo uma referência de objeto. Ele é chamado quando você atribui um valor à propriedade.
Normalmente, você define procedimentos de propriedade em pares, usando as instruções Get
e Set
, mas pode definir o procedimento isoladamente, se a propriedade for somente leitura (Get Statement) ou somente gravação (Set Statement).
Você pode omitir o procedimento e Set
ao usar uma propriedade implementada Get
automaticamente. Para obter mais informações, consulte Propriedades implementadas automaticamente.
Você pode definir propriedades em classes, estruturas e módulos. As propriedades são Public
por padrão, o que significa que você pode chamá-las de qualquer lugar no aplicativo que possa acessar o contêiner da propriedade.
Para obter uma comparação de propriedades e variáveis, confira Diferenças entre propriedades e variáveis no Visual Basic.
Sintaxe da declaração
Uma própria propriedade é definida por um bloco de código entre a Property Statement e a instrução End Property
. Dentro desse bloco, cada procedimento de propriedade aparece como um bloco interno delimitado dentro de uma instrução de declaração (Get
ou Set
) e a declaração End
correspondente.
A sintaxe para declarar uma propriedade e os procedimentos é a seguinte:
[Default] [Modifiers] Property PropertyName[(ParameterList)] [As DataType]
[AccessLevel] Get
' Statements of the Get procedure.
' The following statement returns an expression as the property's value.
Return Expression
End Get
[AccessLevel] Set[(ByVal NewValue As DataType)]
' Statements of the Set procedure.
' The following statement assigns newvalue as the property's value.
LValue = NewValue
End Set
End Property
' - or -
[Default] [Modifiers] Property PropertyName [(ParameterList)] [As DataType]
A Modifiers
pode especificar o nível de acesso e as informações sobre sobrecarga, substituição, compartilhamento e sombreamento, bem como se a propriedade é somente leitura ou somente gravação. O AccessLevel
ou Get
no procedimento Set
pode ser qualquer nível mais restritivo do que o nível de acesso especificado para a própria propriedade. Para obter mais informações, confira Property Statement.
Tipo de Dados
O tipo de dados de uma propriedade e o nível de acesso da entidade de segurança são definidos na instrução Property
, e não nos procedimentos de propriedade. Uma propriedade pode ter apenas um tipo de dados. Por exemplo, você não pode definir uma propriedade para armazenar um valor Decimal
, mas recuperar um valor Double
.
Nível de acesso
No entanto, você pode definir um nível de acesso da entidade de segurança para uma propriedade e restringir ainda mais o nível de acesso em um dos procedimentos de propriedade. Por exemplo, você pode definir uma propriedade Public
e definir um procedimento Private Set
. O procedimento Get
permanece Public
. Você pode alterar o nível de acesso em apenas um dos procedimentos de uma propriedade e só pode torná-lo mais restritivo do que o nível de acesso da entidade de segurança. Para obter mais informações, confira Instruções: declarar uma propriedade com níveis de acesso mistos.
Declaração de parâmetro
Você declarará cada parâmetro da mesma maneira que faz para Subprocedimentos, com exceção de que o mecanismo de passagem deve ser ByVal
.
A sintaxe de cada parâmetro na lista de parâmetros é a seguinte:
[Optional] ByVal [ParamArray] parametername As datatype
Se o parâmetro for opcional, você também deverá fornecer um valor padrão como parte da declaração. A sintaxe para especificar um valor padrão é a seguinte:
Optional ByVal parametername As datatype = defaultvalue
Valor da propriedade
Em um procedimento Get
, o valor de retorno é fornecido à expressão de chamada como o valor da propriedade.
Em um procedimento Set
, o novo valor da propriedade é passado para o parâmetro da instrução Set
. Se você declarar explicitamente um parâmetro, deverá declará-lo com o mesmo tipo de dados que a propriedade. Se você não declarar um parâmetro, o compilador usará o parâmetro implícito Value
para representar o novo valor a ser atribuído à propriedade.
Sintaxe de chamada
Você invocará um procedimento de propriedade implicitamente, referenciando a propriedade. Use o nome da propriedade da mesma maneira que usaria o nome de uma variável, com exceção de que você deve fornecer valores para todos os argumentos que não são opcionais e colocar a lista de argumentos entre parênteses. Se não houver argumentos você pode, opcionalmente, omitir os parênteses.
A sintaxe de uma chamada implícita para um procedimento Set
é a seguinte:
propertyname[(argumentlist)] = expression
A sintaxe de uma chamada implícita para um procedimento Get
é a seguinte:
lvalue = propertyname[(argumentlist)]
Do While (propertyname[(argumentlist)] > expression)
Ilustração de declaração e chamada
A propriedade a seguir armazena um nome completo como dois nomes constituintes, o nome e o sobrenome. Quando o código de chamada lê fullName
, o procedimento Get
combina os dois nomes constituintes e retorna o nome completo. Quando o código de chamada atribui um novo nome completo, o procedimento Set
tenta dividi-lo em dois nomes constituintes. Se ele não encontrar um espaço, armazenará tudo como o nome.
Dim firstName, lastName As String
Property fullName() As String
Get
If lastName = "" Then
Return firstName
Else
Return firstName & " " & lastName
End If
End Get
Set(ByVal Value As String)
Dim space As Integer = Value.IndexOf(" ")
If space < 0 Then
firstName = Value
lastName = ""
Else
firstName = Value.Substring(0, space)
lastName = Value.Substring(space + 1)
End If
End Set
End Property
O exemplo a seguir mostra chamadas típicas para os procedimentos de propriedade de fullName
:
fullName = "MyFirstName MyLastName"
MsgBox(fullName)
Confira também
- Procedimentos
- Procedimentos de função
- Procedimentos do operador
- Parâmetros e Argumentos de Procedimento
- Diferenças entre propriedades e variáveis no Visual Basic
- Como criar uma propriedade
- Como chamar um procedimento de propriedade
- Como declarar e chamar uma propriedade padrão no Visual Basic
- Como inserir um valor em uma propriedade
- Como obter um valor a partir de uma propriedade