Partilhar via


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 auto-implemented 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, como Public.

  • 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 MustOverridecomo .

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 ou Set procedimento de uma propriedade, como código para validar valores de entrada no Set 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 e Set procedimento. Por exemplo, você pode querer fazer o Set procedimento Private e o Get procedimento Public.

  • 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 o Set 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.

Consulte também