Instrução Property

Declara o nome de uma propriedade e os procedimentos de propriedade usados para armazenar e recuperar o valor da propriedade.

Sintaxe

[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ] [ Iterator ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]
    [ <attributelist> ] [ accessmodifier ] Get
        [ statements ]
    End Get
    [ <attributelist> ] [ accessmodifier ] Set ( ByVal value As returntype [, parameterlist ] )
        [ statements ]
    End Set
End Property
- or -
[ <attributelist> ] [ Default ] [ accessmodifier ]
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]

Partes

  • attributelist

    Opcional. Lista de atributos que se aplicam a essa propriedade ou procedimento Get ou Set. Veja Lista de atributo.

  • Default

    Opcional. Especifica que essa propriedade é a propriedade padrão para a classe ou estrutura na qual ela está definida. As propriedades padrão devem aceitar parâmetros, e podem ser definidas e recuperadas sem especificar o nome da propriedade. Se você declarar a propriedade como Default, não poderá usar Private na propriedade ou em qualquer um de seus procedimentos de propriedade.

  • accessmodifier

    Opcional na instrução Property e em no máximo uma das instruções Get e instruções Set. Um dos seguintes pode ser feito:

    Consulte Níveis de acesso no Visual Basic.

  • propertymodifiers

    Opcional. Um dos seguintes pode ser feito:

  • Shared

    Opcional. Consulte Shared.

  • Shadows

    Opcional. Confira Sombras.

  • ReadOnly

    Opcional. Confira ReadOnly.

  • WriteOnly

    Opcional. Consulte WriteOnly.

  • Iterator

    Opcional. Consulte Iterator.

  • name

    Obrigatórios. Nome da propriedade. Consulte Nomes de Elementos Declarados.

  • parameterlist

    Opcional. Lista de nomes de variáveis locais que representam os parâmetros dessa propriedade e possíveis parâmetros adicionais do procedimento Set. Consulte a Lista de parâmetros.

  • returntype

    Necessário se Option Strict for On. Tipo de dados do valor retornado por essa propriedade.

  • Implements

    Opcional. Indica que essa propriedade implementa uma ou mais propriedades, cada uma definida em uma interface implementada pela classe ou estrutura que contém essa propriedade. Consulte Instrução implementa.

  • implementslist

    Necessário se Implements for fornecido. Lista de propriedades sendo implementadas.

    implementedproperty [ , implementedproperty ... ]

    Cada implementedproperty tem a sintaxe e as partes a seguir:

    interface.definedname

    Parte Descrição
    interface Obrigatórios. Nome de uma interface implementada pela classe ou estrutura que contém essa propriedade.
    definedname Obrigatórios. Nome pelo qual a propriedade é definida em interface.
  • Get

    Opcional. Obrigatório se a propriedade estiver marcada ReadOnly. Inicia um procedimento de propriedade Get usado para retornar o valor da propriedade. A instrução Get não é usada com propriedades implementadas automaticamente.

  • statements

    Opcional. Bloco de instruções a serem executadas no procedimento Get ou Set.

  • End Get

    Encerra o procedimento de propriedade Get.

  • Set

    Opcional. Obrigatório se a propriedade estiver marcada WriteOnly. Inicia um procedimento de propriedade Set usado para retornar o valor da propriedade. A instrução Set não é usada com propriedades implementadas automaticamente.

  • End Set

    Encerra o procedimento de propriedade Set.

  • End Property

    Encerra a definição desta propriedade.

Comentários

A instrução Property apresenta a declaração de uma propriedade. Uma propriedade pode ter um procedimento Get (somente leitura), um procedimento Set(somente gravação) ou ambos (leitura-gravação). Você pode omitir os procedimentos Get e Set ao usar uma propriedade implementada automaticamente. Para obter mais informações, consulte Propriedades autoimplementadas.

Você só pode usar Property no nível da classe. Isso significa que o contexto de declaração de uma variável precisa ser uma classe, estrutura, módulo, procedimento ou interface, e não pode ser um arquivo de origem, namespace, procedimento ou bloco. Para obter mais informações, consulte Contextos de declaração e níveis de acesso padrão.

Por padrão, as propriedades usam o acesso público. Você pode ajustar o nível de acesso de uma propriedade com um modificador de acesso na instrução Property e, opcionalmente, ajustar um dos procedimentos de propriedade a um nível de acesso mais restritivo.

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. Esse 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.

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 ReadOnly ou WriteOnly, o procedimento de propriedade única (Get ou Set, respectivamente) representa toda a propriedade. Você não pode declarar um nível de acesso diferente para esse procedimento, pois isso definiria dois níveis de acesso para a propriedade.

  • Tipo de retorno. A instrução Property pode declarar o tipo de dados do valor que retorna. Você pode especificar qualquer tipo de dados ou o nome de uma enumeração, estrutura, classe ou interface.

    Se você não especificar returntype, a propriedade retornará Object.

  • Implementação. Se essa propriedade usar a palavra-chave Implements, a classe ou estrutura que a contém deverá ter uma instrução Implements imediatamente após a instrução Class ou Structure. A instrução Implements deve incluir cada interface especificada em implementslist. No entanto, o nome pelo qual uma interface define o Property (em definedname) não precisa ser o mesmo nome dessa propriedade (em name).

Comportamento

  • Retorno de um procedimento de propriedade. Quando o procedimento Get ou Set retorna ao código de chamada, a execução continua com a instrução após a instrução que a invocou.

    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.

  • Valor de retorno. Para retornar um valor de um procedimento Get, você pode atribuir o valor ao nome da propriedade ou incluí-lo em uma instrução Return. O exemplo a seguir atribui o valor retornado ao nome da propriedade quoteForTheDay e, em seguida, usa a instrução Exit Property a ser retornada.

    Private quoteValue As String = "No quote assigned yet."
    
    ReadOnly Property QuoteForTheDay() As String
        Get
            QuoteForTheDay = quoteValue
            Exit Property
        End Get
    End Property
    

    Se você usar Exit Property sem atribuir um valor a name, o procedimento Get retornará o valor padrão para o tipo de dados da propriedade.

    Ao mesmo tempo, a instrução Return atribui o valor de retorno do procedimento Get e sai do procedimento. O exemplo a seguir mostra a isso.

    Private quoteValue As String = "No quote assigned yet."
    
    ReadOnly Property QuoteForTheDay() As String
        Get
            Return quoteValue
        End Get
    End Property
    

Exemplo

O exemplo a seguir declara uma propriedade em uma classe.

Class Class1
    ' Define a local variable to store the property value.
    Private propertyValue As String
    ' Define the property.
    Public Property Prop1() As String
        Get
            ' The Get property procedure is called when the value
            ' of a property is retrieved.
            Return propertyValue
        End Get
        Set(ByVal value As String)
            ' The Set property procedure is called when the value
            ' of a property is modified.  The value to be assigned
            ' is passed in the argument to Set.
            propertyValue = value
        End Set
    End Property
End Class

Confira também