Como: Declarar e chamar uma propriedade padrão no Visual Basic

Uma propriedade padrão é uma propriedade de classe ou estrutura que seu código pode acessar sem especificá-la. Ao chamar nomes de código uma classe ou estrutura, mas não uma propriedade, e o contexto permite acesso a uma propriedade, o Visual Basic resolve o acesso a essa classe ou propriedade padrão da estrutura, se existir.

Uma classe ou estrutura pode ter no máximo uma propriedade padrão. No entanto, você pode sobrecarregar uma propriedade padrão e ter mais de uma versão dela.

Para obter mais informações, consulte Padrão.

Para declarar uma propriedade padrão

  1. Declare o imóvel da forma normal. Não especifique a Shared palavra-chave ou Private .

  2. Inclua a Default palavra-chave na declaração de propriedade.

  3. Especifique pelo menos um parâmetro para a propriedade. Não é possível definir uma propriedade padrão que não use pelo menos um argumento.

    Default Property myProperty(ByVal index As Integer) As String
    

Para chamar uma propriedade padrão

  1. Declare uma variável da classe ou tipo de estrutura que contém.

    Dim x As New class1(3)
    
  2. Use o nome da variável sozinho em uma expressão onde você normalmente incluiria o nome da propriedade.

    MsgBox(x)
    
  3. Siga o nome da variável com uma lista de argumentos entre parênteses. Uma propriedade padrão deve ter pelo menos um argumento.

    MsgBox(x(1))
    
  4. Para recuperar o valor da propriedade padrão, use o nome da variável, com uma lista de argumentos, em uma expressão ou seguindo o sinal de igual (=) em uma instrução de atribuição.

    MsgBox(x(1) & x(2) & x(3))
    
  5. Para definir o valor da propriedade padrão, use o nome da variável, com uma lista de argumentos, no lado esquerdo de uma instrução de atribuição.

    x(1) = "Hello"
    x(2) = " "
    x(3) = "World"
    
  6. Você sempre pode especificar o nome da propriedade padrão junto com o nome da variável, assim como faria para acessar qualquer outra propriedade.

    x.myProperty(1) = "Hello"
    x.myProperty(2) = " "
    x.myProperty(3) = "World"
    

Exemplo 1

O exemplo a seguir declara uma propriedade padrão em uma classe.

Public Class class1
    Private myStrings() As String
    Sub New(ByVal size As Integer)
        ReDim myStrings(size)
    End Sub
    Default Property myProperty(ByVal index As Integer) As String
        Get
            ' The Get property procedure is called when the value
            ' of the property is retrieved.
            Return myStrings(index)
        End Get
        Set(ByVal Value As String)
            ' The Set property procedure is called when the value
            ' of the property is modified.
            ' The value to be assigned is passed in the argument 
            ' to Set.
            myStrings(index) = Value
        End Set
    End Property
End Class

Exemplo 2

O exemplo a seguir demonstra como chamar a propriedade myProperty padrão na classe class1. As três instruções de atribuição armazenam valores no myProperty, e a MsgBox chamada lê os valores.

Sub Test()
    Dim x As New class1(3)
    x(1) = "Hello"
    x(2) = " "
    x(3) = "World"
    MsgBox(x(1) & x(2) & x(3))
End Sub

O uso mais comum de uma propriedade padrão é a Item[] propriedade em várias classes de coleção.

Programação robusta

As propriedades padrão podem resultar em uma pequena redução nos caracteres do código-fonte, mas podem tornar seu código mais difícil de ler. Se o código de chamada não estiver familiarizado com sua classe ou estrutura, quando ele fizer uma referência ao nome da classe ou estrutura, não será possível ter certeza se essa referência acessa a própria classe ou estrutura ou uma propriedade padrão. Isso pode levar a erros do compilador ou erros sutis de lógica em tempo de execução.

Você pode reduzir um pouco a chance de erros de propriedade padrão sempre usando a instrução Option Strict para definir a verificação de tipo do compilador como On.

Se você estiver planejando usar uma classe ou estrutura predefinida em seu código, deverá determinar se ela tem uma propriedade padrão e, em caso afirmativo, qual é seu nome.

Devido a essas desvantagens, você deve considerar não definir propriedades padrão. Para a legibilidade do código, você também deve considerar sempre fazer referência a todas as propriedades explicitamente, até mesmo às propriedades padrão.

Consulte também