Propriedades autoimplementadas (Visual Basic)
As propriedades autoimplementadas permitem que você especifique rapidamente uma propriedade de uma classe, sem precisar gravar código na propriedade Get
e Set
. Quando você grava o código de uma propriedade autoimplementada, o compilador do Visual Basic cria automaticamente um campo privado para armazenar a variável de propriedade, além de criar os procedimentos Get
e Set
associados.
Com as propriedades implementadas automaticamente, uma propriedade, incluindo um valor padrão, pode ser declarada em uma única linha. O exemplo a seguir mostra três declarações de propriedade.
Public Property Name As String
Public Property Owner As String = "DefaultName"
Public Property Items As New List(Of String) From {"M", "T", "W"}
Public Property ID As New Guid()
Uma propriedade autoimplementada é equivalente a uma propriedade para a qual o valor da propriedade é armazenado em um campo privado. O exemplo de código a seguir mostra uma propriedade autoimplementada.
Property Prop2 As String = "Empty"
O exemplo de código a seguir mostra o código equivalente para o exemplo de propriedade autoimplementada anterior.
Private _Prop2 As String = "Empty"
Property Prop2 As String
Get
Return _Prop2
End Get
Set(ByVal value As String)
_Prop2 = value
End Set
End Property
O código a seguir mostra a implementação de propriedades somente leitura:
Class Customer
Public ReadOnly Property Tags As New List(Of String)
Public ReadOnly Property Name As String = ""
Public ReadOnly Property File As String
Sub New(file As String)
Me.File = file
End Sub
End Class
Você pode atribuir expressões de inicialização à propriedade, conforme mostrado no exemplo, ou pode atribuir às propriedades no construtor do tipo relativo. Você pode atribuir aos campos de suporte das propriedades somente leitura a qualquer momento.
Campos de Suporte
Quando você declara uma propriedade autoimplementada, o Visual Basic cria automaticamente um campo privado oculto chamado campo de suporte, para conter o valor da propriedade. O nome do campo de suporte é o nome da propriedade autoimplementada, precedido de um sublinhado (_). Por exemplo, se você declarar uma propriedade autoimplementada chamada ID
, o campo de suporte será chamado de _ID
. Se você incluir um membro da classe que também é chamado de _ID
, produzirá um conflito de nomenclatura e o Visual Basic relatará um erro do compilador.
O campo de suporte também tem as seguintes características:
O modificador de acesso do campo de suporte é sempre
Private
, mesmo quando a própria propriedade tem um nível de acesso diferente, comoPublic
.Se a propriedade estiver marcada como
Shared
, o campo de suporte também será compartilhado.Os atributos especificados para a propriedade não se aplicam ao campo de suporte.
O campo de suporte pode ser acessado a partir do código na classe e a partir de ferramentas de depuração, como a janela Inspeção. No entanto, o campo de suporte não é exibido em uma lista de preenchimento de palavras do IntelliSense.
Como inicializar uma propriedade autoimplementada
Qualquer expressão que possa ser usada para inicializar um campo é válida para inicializar uma propriedade autoimplementada. Quando você inicializa uma propriedade autoimplementada, a expressão é avaliada e passada para o procedimento Set
da propriedade. Os exemplos de código a seguir mostram algumas propriedades autoimplementadas que incluem valores iniciais.
Property FirstName As String = "James"
Property PartNo As Integer = 44302
Property Orders As New List(Of Order)(500)
Não é possível inicializar uma propriedade autoimplementada que é membro de um Interface
ou que esteja marcada como MustOverride
.
Ao declarar uma propriedade autoimplementada como membro de um Structure
, você só pode inicializar a propriedade autoimplementada se ela estiver marcada como Shared
.
Quando você declara uma propriedade autoimplementada como matriz, não é possível especificar limites de matriz explícitos. No entanto, você pode fornecer um valor usando um inicializador de matriz, conforme mostrado nos exemplos a seguir.
Property Grades As Integer() = {90, 73}
Property Temperatures As Integer() = New Integer() {68, 54, 71}
Definições de propriedade que exigem a sintaxe padrão
As propriedades autoimplementadas são práticas e viabilizam vários cenários de programação. No entanto, há situações em que você não pode usar uma propriedade autoimplementada e, em vez disso, deve usar a sintaxe de propriedade padrão ou expandida.
Você precisará usar a sintaxe expandida property-definition, se quiser fazer um destes procedimentos:
Adicionar código ao procedimento
Get
ouSet
de uma propriedade, como o código para validar valores de entrada no procedimentoSet
. Por exemplo, talvez você queira verificar se uma cadeia de caracteres, que representa um número de telefone, contém os numerais necessários, antes de definir o valor da propriedade.Especificar a acessibilidade diferente para o procedimento
Get
eSet
. Por exemplo, talvez você queira fazer oSet
procedimentoPrivate
e oGet
procedimentoPublic
.Criar propriedades que sejam
WriteOnly
.Use propriedades parametrizadas (incluindo propriedades
Default
). Você deve declarar uma propriedade expandida para especificar um parâmetro para a propriedade ou especificar parâmetros adicionais para o procedimentoSet
.Coloque um atributo no campo de suporte ou altere o nível de acesso do campo de suporte.
Forneça comentários XML para o campo de suporte.
Como expandir uma propriedade autoimplementada
Se você precisar converter uma propriedade autoimplementada em uma propriedade expandida que contém um procedimento Get
ou Set
, o Editor de Código do Visual Basic pode gerar automaticamente os procedimentos Get
e Set
, bem como a instrução End Property
para a propriedade. O código será gerado se você colocar o cursor em uma linha em branco, seguindo a instrução Property
, digitar um G
(para Get
) ou um S
(para Set
) e pressionar ENTER. O Editor de Código do Visual Basic gera automaticamente o procedimento Get
ou Set
para propriedades somente leitura e somente gravação, quando você pressiona ENTER ao final de uma instrução Property
.
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de