Compartilhar via


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

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

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

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

Confira também