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:
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
Conceitos
Variáveis de objeto no Visual Basic
Atribuição de variável do objeto (Visual Basic)