Compartilhar via


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. Quando o código nomeia uma classe ou estrutura, mas não uma propriedade, e o contexto permite o acesso a uma propriedade, o Visual Basic resolve o acesso à propriedade padrão dessa classe ou estrutura, se houver uma.

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 a propriedade da maneira normal. Não especifique a palavra-chave Shared ou Private.

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

  3. Especifique pelo menos um parâmetro para a propriedade. Você não pode definir uma propriedade padrão que não tenha pelo menos um argumento.

    Default Property myProperty(ByVal index As Integer) As String
    

Para chamar uma propriedade padrão

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

    Dim x As New class1(3)
    
  2. Use o nome da variável sozinho em uma expressão em que normalmente você 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 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 em myProperty, e a chamada MsgBox 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 de 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 de classe ou estrutura, ele não poderá 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 de tempo de execução.

Você pode reduzir um pouco a chance de erros de propriedade padrão sempre usando a Instrução Opção Estrita 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, será necessário determinar se ela tem uma propriedade padrão e, em caso afirmativo, qual é o nome dela.

Devido a essas desvantagens, você deve considerar não definir propriedades padrão. Para legibilidade de código, você também deve considerar sempre especificar todas as propriedades explicitamente, incluindo as propriedades padrão.

Consulte também