Propriedades implementadas automaticamente (Visual Basic)
As propriedades implementadas automaticamente permitem que você especifique rapidamente uma propriedade de uma classe sem precisar escrever código e Get
Set
a propriedade. Quando você escreve código para uma propriedade implementada automaticamente, o compilador do Visual Basic cria automaticamente um campo privado para armazenar a variável de propriedade, além de criar os procedimentos e Set
associadosGet
.
Com 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 implementada automaticamente é 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 implementada automaticamente.
Property Prop2 As String = "Empty"
O exemplo de código a seguir mostra o código equivalente para o exemplo de propriedade implementado automaticamente 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 implementada automaticamente, o Visual Basic cria automaticamente um campo privado oculto chamado campo de suporte para conter o valor da propriedade. O nome do campo de apoio é o nome da propriedade implementado automaticamente precedido por um sublinhado (_). Por exemplo, se você declarar uma propriedade implementada automaticamente chamada ID
, o campo de suporte será denominado _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.
Inicializando uma propriedade implementada automaticamente
Qualquer expressão que possa ser usada para inicializar um campo é válida para inicializar uma propriedade implementada automaticamente. Quando você inicializa uma propriedade implementada automaticamente, a expressão é avaliada e passada para o Set
procedimento da propriedade. Os exemplos de código a seguir mostram algumas propriedades implementadas automaticamente 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 implementada automaticamente que seja membro de um Interface
, ou uma que esteja marcada MustOverride
como .
Ao declarar uma propriedade implementada automaticamente como membro de um Structure
, você só poderá inicializar a propriedade implementada automaticamente se ela estiver marcada como Shared
.
Quando você declara uma propriedade implementada automaticamente como uma 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 implementadas automaticamente são convenientes e suportam muitos cenários de programação. No entanto, há situações em que você não pode usar uma propriedade implementada automaticamente 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.
Expandindo uma propriedade implementada automaticamente
Se você precisar converter uma propriedade implementada automaticamente em uma propriedade expandida que contenha um Get
procedimento orSet
, o Editor de Código do Visual Basic poderá gerar automaticamente os procedimentos and Set
e End Property
a Get
instrução 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
.