Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Você usa uma instrução de declaração normal para declarar uma variável de objeto. Para o tipo de dados, especifique Object (ou seja, o Tipo de Dados de Objeto) ou uma classe mais específica da qual o objeto deve ser criado.
Declarar uma variável como Object é o mesmo que declará-la como System.Object.
Quando você declara uma variável com uma classe de objeto específica, ela pode acessar todos os métodos e propriedades expostos por essa classe e as classes das quais ela herda. Se você declarar a variável com Object, ela poderá acessar apenas os membros da Object classe, a menos que você ative Option Strict Off a permissão de associação tardia.
Sintaxe da Declaração
Use a seguinte sintaxe para declarar uma variável de objeto:
Dim variablename As [New] { objectclass | Object }
Você também pode especificar Public, Protected, Friend, Protected Friend, Private, Shared ou Static na declaração. As declarações de exemplo a seguir são válidas:
Private objA As Object
Static objB As System.Windows.Forms.Label
Dim objC As System.OperatingSystem
Associação tardia e associação antecipada
Às vezes, a classe específica é desconhecida até que seu código seja executado. Nesse caso, você deve declarar a variável de objeto com o Object tipo de dados. Isso cria uma referência geral a qualquer tipo de objeto e a classe específica é atribuída em tempo de execução. Isso é chamado de associação tardia. A associação tardia requer tempo de execução adicional. Ele também limita seu código aos métodos e propriedades da classe que você atribuiu mais recentemente a ele. Isso poderá causar erros em tempo de execução se o código tentar acessar membros de uma classe diferente.
Quando você conhece a classe específica em tempo de compilação, deve declarar que a variável de objeto é dessa classe. Isso é chamado de ligação antecipada. A associação antecipada melhora o desempenho e garante o acesso de código a todos os métodos e propriedades da classe específica. Nas declarações de exemplo anteriores, se a variável objA usar apenas objetos de classe System.Windows.Forms.Label, você deverá especificar As System.Windows.Forms.Label em sua declaração.
Vantagens da associação inicial
Declarar uma variável de objeto como uma classe específica oferece várias vantagens:
Verificação automática de tipos
Acesso garantido a todos os membros da classe específica
Suporte do Microsoft IntelliSense no Editor de Código
Melhor legibilidade do seu código
Menos erros em seu código
Erros capturados em tempo de compilação em vez de tempo de execução
Execução de código mais rápida
Acesso aos membros da variável de objeto
Quando Option Strict é ativada On, uma variável de objeto pode acessar apenas os métodos e as propriedades da classe com a qual você a declara. O exemplo a seguir ilustra essa situação.
' 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
Neste exemplo, p pode usar apenas os membros da Object própria classe, que não incluem a Left propriedade. Por outro lado, q foi declarado como do tipo Label, para que ele possa usar todos os métodos e propriedades da Label classe no System.Windows.Forms namespace.
Flexibilidade de variáveis de objeto
Ao trabalhar com objetos em uma hierarquia de herança, você tem uma escolha de qual classe usar para declarar suas variáveis de objeto. Ao fazer essa escolha, você deve equilibrar a flexibilidade da atribuição de objeto em relação ao acesso a membros de uma classe. Por exemplo, considere a hierarquia de herança que leva à classe System.Windows.Forms.Form.
Suponha que seu aplicativo defina uma classe de formulário chamada specialForm, que herda da classe Form. Você pode declarar uma variável de objeto que se refere especificamente a specialForm, como mostra o exemplo a seguir.
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 no exemplo anterior limita a variável nextForm a objetos da classe specialForm, mas também torna todos os métodos e propriedades de specialForm disponíveis para nextForm, bem como todos os membros de todas as classes das quais specialForm herda.
Você pode tornar uma variável de objeto mais geral declarando-a de tipo Form, como mostra o exemplo a seguir.
Dim anyForm As System.Windows.Forms.Form
A declaração no exemplo anterior permite que você atribua qualquer formulário em seu aplicativo a anyForm. No entanto, embora anyForm possa acessar todos os membros da classe Form, ele não pode usar nenhum dos métodos ou propriedades adicionais definidos para formulários específicos, como specialForm.
Todos os membros de uma classe base estão disponíveis para classes derivadas, mas os membros adicionais de uma classe derivada não estão disponíveis para a classe base.