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.
Visual Basic fornece os seguintes procedimentos de propriedade:
- Um
Get
procedimento retorna o valor de uma propriedade. Ele é chamado quando você acessa a propriedade em uma expressão. - Um
Set
procedimento define uma propriedade como um valor, incluindo uma referência de objeto. Ele é chamado quando você atribui um valor à propriedade.
Você geralmente define procedimentos de propriedade em pares, usando as instruções andSet
, mas pode definir qualquer procedimento sozinho se a propriedade for somente leitura (Get Statement) ou somente gravação (set Statement).Get
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 em seu aplicativo que possa acessar o contêiner da propriedade.
Para obter uma comparação de propriedades e variáveis, consulte Diferenças entre propriedades e variáveis no Visual Basic.
Sintaxe da declaração
Uma propriedade em si é definida por um bloco de código incluído na Declaração de propriedade e na End Property
instrução. Dentro deste bloco, cada procedimento de propriedade aparece como um bloco interno incluído dentro de uma instrução de declaração (Get
ou Set
) e a declaração correspondente End
.
A sintaxe para declarar uma propriedade e seus 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]
O Modifiers
pode especificar o nível de acesso e informações sobre sobrecarga, substituição, compartilhamento e sombreamento, bem como se a propriedade é somente leitura ou somente gravação. O AccessLevel
procedimento on the Get
ou Set
pode ser qualquer nível mais restritivo do que o nível de acesso especificado para a propriedade em si. Para obter mais informações, consulte Declaração de propriedade.
Tipo de Dados
O tipo de dados e o nível de acesso principal de uma propriedade são definidos na Property
instrução e não nos procedimentos da propriedade. Uma propriedade pode ter apenas um tipo de dados. Por exemplo, não é possível definir uma propriedade para armazenar um Decimal
valor, mas recuperar um Double
valor.
Nível de Acesso
No entanto, você pode definir um nível de acesso principal para uma propriedade e restringir ainda mais o nível de acesso em um de seus procedimentos de propriedade. Por exemplo, você pode definir uma Public
propriedade e, em seguida, definir um Private Set
procedimento. O Get
procedimento mantém-se 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 principal. Para obter mais informações, consulte Como declarar uma propriedade com níveis de acesso mistos.
Declaração de parâmetros
Você declara cada parâmetro da mesma forma que faz para Sub Procedures, exceto que o mecanismo de passagem deve ser ByVal
.
A sintaxe para 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 de sua declaração. A sintaxe para especificar um valor padrão é a seguinte:
Optional ByVal parametername As datatype = defaultvalue
Valor do imóvel
Em um Get
procedimento, o valor de retorno é fornecido para a expressão de chamada como o valor da propriedade.
Em um Set
procedimento, o novo valor da propriedade é passado para o parâmetro da Set
instrução. 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 Value
implícito para representar o novo valor a ser atribuído à propriedade.
Sintaxe de chamada
Você invoca um procedimento de propriedade implicitamente fazendo referência à propriedade. Você usa o nome da propriedade da mesma forma que usaria o nome de uma variável, exceto que você deve fornecer valores para todos os argumentos que não são opcionais e você deve colocar a lista de argumentos entre parênteses. Se nenhum argumento for fornecido, você pode, opcionalmente, omitir os parênteses.
A sintaxe de uma chamada implícita para um Set
procedimento é a seguinte:
propertyname[(argumentlist)] = expression
A sintaxe de uma chamada implícita para um Get
procedimento é a seguinte:
lvalue = propertyname[(argumentlist)]
Do While (propertyname[(argumentlist)] > expression)
Ilustração da declaração e do convite à apresentação de propostas
A propriedade a seguir armazena um nome completo como dois nomes constituintes, o nome e o sobrenome. Quando o código de chamada é lido, o Get
procedimento combina os dois nomes constituintes fullName
e retorna o nome completo. Quando o código de chamada atribui um novo nome completo, o Set
procedimento tenta dividi-lo em dois nomes constituintes. Se não encontrar um espaço, armazena tudo como o primeiro 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)
Consulte também
- Procedimentos
- Procedimentos de função
- Procedimentos do Operador
- Parâmetros e argumentos do 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: Colocar um valor em uma propriedade
- Como: Obter um valor de uma propriedade