Propriedades implementadas automaticamente (Visual Basic)
As propriedades implementadas automaticamente permitem que você especifique rapidamente uma propriedade de uma classe sem ter que escrever código para Get
e 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 implementada 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 à propriedade com expressões de inicialização, conforme mostrado no exemplo, ou pode atribuir às propriedades no construtor do tipo que contém. Você pode atribuir aos campos de suporte de propriedades somente leitura a qualquer momento.
Campo de apoio
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 suporte é o nome da propriedade implementada automaticamente precedido por um sublinhado (_). Por exemplo, se você declarar uma propriedade implementada automaticamente chamada ID
, o campo de suporte será chamado _ID
. Se você incluir um membro de sua classe que também é nomeado _ID
, você produz um conflito de nomenclatura e Visual Basic relata um erro de compilador.
O campo de apoio também tem as seguintes características:
O modificador de acesso para o campo de suporte é sempre
Private
, mesmo quando a propriedade em si tem um nível de acesso diferente, comoPublic
.Se a propriedade estiver marcada como
Shared
, o campo de apoio 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 dentro da classe e de ferramentas de depuração, como a janela Inspeção. No entanto, o campo de suporte não aparece em uma lista de conclusão 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 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 explícitos da matriz. 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 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 sintaxe de propriedade padrão ou expandida.
Você precisa usar a sintaxe de definição de propriedade expandida se quiser fazer qualquer um dos seguintes:
Adicione código ao
Get
ouSet
procedimento de uma propriedade, como código para validar valores de entrada noSet
procedimento. Por exemplo, talvez você queira verificar se uma cadeia de caracteres que representa um número de telefone contém o número necessário de algarismos antes de definir o valor da propriedade.Especifique diferentes acessibilidades para o
Get
eSet
procedimento. Por exemplo, você pode querer fazer oSet
procedimentoPrivate
e oGet
procedimentoPublic
.Crie propriedades que são
WriteOnly
.Use propriedades parametrizadas (incluindo
Default
propriedades). Você deve declarar uma propriedade expandida para especificar um parâmetro para a propriedade ou para especificar parâmetros adicionais para oSet
procedimento.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ê tiver que converter uma propriedade implementada automaticamente em uma propriedade expandida que contém um Get
ou Set
procedimento, o Editor de Códigos do Visual Basic pode gerar automaticamente o Get
e Set
procedimentos e End Property
instrução para a propriedade. O código é gerado se você colocar o cursor em uma linha em branco após a Property
instrução, digite a G
(for Get
) ou um S
(for Set
) e pressione ENTER. O Editor de Códigos do Visual Basic gera automaticamente o Get
ou Set
procedimento para propriedades somente leitura e somente gravação quando você pressiona ENTER no final de uma Property
instrução.