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
ouSet
. 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á usarPrivate
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çõesGet
e instruçõesSet
. Um dos seguintes pode ser feito:Consulte Níveis de acesso no Visual Basic.
propertymodifiers
Opcional. Um dos seguintes pode ser feito:
MustOverride Overrides
NotOverridable Overrides
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
forOn
. 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 propriedadeGet
usado para retornar o valor da propriedade. AGet
instrução não é usada com propriedades implementadas automaticamente.statements
Opcional. Bloco de instruções a serem executadas no procedimento
Get
ouSet
.End Get
Encerra o procedimento de propriedade
Get
.Set
Opcional. Obrigatório se a propriedade estiver marcada
WriteOnly
. Inicia um procedimento de propriedadeSet
usado para retornar o valor da propriedade. ASet
instrução 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 o procedimento e Set
ao usar uma propriedade implementada Get
automaticamente. Para obter mais informações, consulte Propriedades implementadas automaticamente.
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 procedimentoSet
, 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 declaradaFriend
, você poderá declarar o procedimentoSet
Private
, mas nãoPublic
.Se você estiver definindo uma propriedade
ReadOnly
ouWriteOnly
, o procedimento de propriedade única (Get
ouSet
, 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çãoImplements
imediatamente após a instruçãoClass
ouStructure
. A instruçãoImplements
deve incluir cada interface especificada emimplementslist
. No entanto, o nome pelo qual uma interface define oProperty
(emdefinedname
) não precisa ser o mesmo nome dessa propriedade (emname
).
Comportamento
Retorno de um procedimento de propriedade. Quando o procedimento
Get
ouSet
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
eReturn
causam uma saída imediata de um procedimento de propriedade. Qualquer número de instruçõesExit Property
eReturn
podem aparecer em qualquer lugar no procedimento, e você pode misturar instruçõesExit Property
eReturn
.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çãoReturn
. O exemplo a seguir atribui o valor retornado ao nome da propriedadequoteForTheDay
e, em seguida, usa a instruçãoExit 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 aname
, o procedimentoGet
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 procedimentoGet
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