Compartilhar via


Declaração de variável do objeto (Visual Basic)

Você usa uma declaração comum para declarar uma variável objeto. Para o tipo de dados, você especifica ou Object ( ou seja, o Tipo de dados Object) ou uma classe mais específica da qual o objeto será criado.

Declarar uma variável como Object é o mesmo que declarar como Object.

Quando você declara uma variável com uma classe de objeto específica, ela pode acessar todos os métodos e propriedades expostos pela classe e as classes das quais ela herda. Se você declara a variável com Object, ela pode acessar somente os membros da classe Object, a não ser que você coloque Option Strict Off para permitir ligação tardia.

Sintaxe da Declaração

Para declarar uma variável objeto, você pode usar a seguinte sintaxe:

Dim variablename As [New] { objectclass | Object }

Você pode também especificarPúblico (Visual Basic), Protegido (Visual Basic), Friend (Visual Basic), Protected Friend, Particular (Visual Basic), Compartilhado (Visual Basic), ou Estático (Visual Basic) na declaração. O exemplo a seguir mostra uma declaração válida:

Private objA As Object
Static objB As System.Windows.Forms.Label
Dim objC As System.OperatingSystem

Ligação Tardia ou Ligação Atual

Algumas vezes a classe específica é desconhecida até que o código seja executado. Nesse caso, você deve declara a variável objeto com o tipo de dados Object. Isso cria uma referência geral para qualquer tipo de objeto, e a classe específica é designada em tempo de execução. Isso é chamado ligação tardia. A ligação tardia exige tempo adicional de execução. Também limita seu código para os métodos e propriedade da classe mais recentemente designada para a variável. Isso pode causar errors em tempo de execução se seu código porcurar acessar membros de uma classe diferente.

Quando você conhece a classe específica em tempo de compilação, você deve declarar a variável objeto para ser daquela classe. Isso é chamado ligação atual. A ligação atual melhora a performance e garante a seu código acesso para todos os métodos e propriedade da classe específica. Nas declarações de exemplo anteriores, se a variável objA usa somente objetos da classe Label, você deve especificar As System.Windows.Forms.Label na declaração.

Vantagens da Ligação Atual

Declarar uma varíavel objeto como uma classe específica dá várias vantagens:

  • Verificação de tipo automática

  • Acesso garantido para todos os membros da classe específica

  • O Editor de Códigos fornece a tecnologia Microsoft IntelliSense para ajudá-lo.

  • Leitura de código aperfeiçoada

  • Menos erros no seu código

  • Erros pegos em tempo de compilação (antes da execução)

  • Execução de código mais rápida

Acesso aos membros das variáveis objeto

Quando Option Strict é colocada On, uma variável objeto pode acessar somente os métodos e propriedade da classe com a qual foi declarada. O exemplo a seguir ilustra isto:

' Option statements must precede all other source file lines.
Option Strict On
' Imports statement must precede all declarations in the source file.
Imports System.Windows.Forms
Public Sub accessMembers()
    Dim p As Object
    Dim q As System.Windows.Forms.Label
    p = New System.Windows.Forms.Label
    q = New System.Windows.Forms.Label
    Dim j, k As Integer
    ' The following statement generates a compiler ERROR.
    j = p.Left
    ' The following statement retrieves the left edge of the label in pixels.
    k = q.Left
End Sub

Nesse examplo, p pode usar somente os membros da classe Object, que não inclui a propriedade Left. Por outro lado, q foi declarada com o tipo Label, logo ela pode usar todos os métodos e propriedade da classe Label no System.Windows.Forms namespace.

Flexibilidade das variáveis objeto

Quando trabalhar com objetos em uma hieraquia de herança, você tem pode escolher qual classe usar para declarar variáveis objeto. Fazendo a escolha, você deve balancear flexibilidade de designação de objetos e acesso para membros de uma classe. Por exemplo, considera a hieraquia de herança que leva à classe Form:

Object

    Component

      Control

        ScrollableControl

          ContainerControl

            Form

Suponha que sua aplicação defina uma classe de formulário chamda de specialForm, que herda da classe Form. Você pode declarar uma variável objeto que se refere especificamente a specialForm, como o exemplo abaixo mostra.

Public Class specialForm
    Inherits System.Windows.Forms.Form
    ' Insert code defining methods and properties of specialForm.
End Class
Dim nextForm As New specialForm

A declaração do exemplo anterior limita a variável nextForm a objeto da classe specialForm, mas também deixa todos os métodos e propriedade de specialForm disponíveis para nextForm, assim como todos os membros de todas as classes das quais specialForm herda.

Vpcê pode fazer uma variável objeto mais geral declarando-a com o tipo Form, como o exemplo seguinte mostra.

Dim anyForm As System.Windows.Forms.Form

A declaração no exemplo anterior permite atribuir qualquer formulário em seu aplicativo para anyForm. No entanto, apesar de anyForm poder acessar todos os membros da classe Form, não pode usar nenhum dos métodos adicionais ou propriedades definidas para formulários específicos como specialForm.

Todos os membros de uma classe base estão disponívels para as classes derivadas, mas os membros adicionais de uma classe derivada não estão disponíveis para a classe base.

Consulte também

Tarefas

Como declarar uma variável de objeto e atribuir um objeto a ela no Visual Basic

Como acessar membros de um objeto (Visual Basic)

Referência

Operador New (Visual Basic)

Instrução Option Strict

Conceitos

Variáveis de objeto no Visual Basic

Atribuição de variável do objeto (Visual Basic)

Valores de variável de objeto (Visual Basic)

Inferência de tipo local (Visual Basic)