Partilhar via


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 fullNamee 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