Tipo de dados Object

Contém endereços que se referem a objetos. Você pode atribuir qualquer tipo de referência (cadeia de caracteres, matriz, classe ou interface) a uma variável Object. Uma variável Object também pode se referir a dados de qualquer tipo de valor (numérico, Boolean, Char, Date, estrutura ou enumeração).

Comentários

O tipo de dados Object pode apontar para dados de qualquer tipo de dados, incluindo qualquer instância de objeto que seu aplicativo reconheça. Use Object quando você não souber em tempo de compilação para qual tipo de dados a variável pode apontar.

O valor padrão de Object é Nothing (uma referência nula).

Tipos de dados

Você pode atribuir uma variável, constante ou expressão de qualquer tipo de dados a uma variável Object. Para determinar o tipo de dados ao qual uma variável Object se refere atualmente, você pode usar o método GetTypeCode da classe System.Type. O exemplo a seguir ilustra essa situação.

Dim myObject As Object
' Suppose myObject has now had something assigned to it.
Dim datTyp As Integer
datTyp = Type.GetTypeCode(myObject.GetType())

O tipo de dados Object também é um tipo de referência. No entanto, o Visual Basic trata uma variável Object como um tipo de valor quando ela se refere a dados de um tipo de valor.

Armazenamento

Seja qual for o tipo de dados ao qual ela se refere, a variável Object não contém o valor de dados em si, mas sim um ponteiro para o valor. Ela sempre usa quatro bytes na memória do computador, mas isso não inclui o armazenamento dos dados que representam o valor da variável. Devido ao código que usa o ponteiro para localizar os dados, variáveis Object que contêm tipos de valor são ligeiramente mais lentas de acessar do que as variáveis com tipos explícitos.

Dicas de programação

  • Considerações sobre interoperabilidade. Se você estiver estabelecendo interface com componentes não gravados para o .NET Framework, por exemplo, automação ou objetos COM, tenha em mente que os tipos de ponteiro em outros ambientes não são compatíveis com o tipo Object do Visual Basic.

  • Desempenho. Uma variável que você declara com o tipo Object é flexível o suficiente para conter uma referência a qualquer objeto. No entanto, quando você invoca um método ou propriedade em uma variável como essa, sempre acarreta associação tardia (em tempo de execução). Para forçar a associação antecipada (em tempo de compilação) e um melhor desempenho, declare a variável com um nome de classe específico ou converta-a para o tipo de dados específico.

    Ao declarar uma variável de objeto, tente usar um tipo de classe específico, por exemplo OperatingSystem, em vez do tipo generalizado Object. Você também deve usar a classe mais específica disponível, como TextBox em vez de Control, para que possa acessar as propriedades e métodos. Normalmente, você pode usar a lista Classes no Pesquisador de Objetos para localizar nomes de classe disponíveis.

  • Ampliação. Todos os tipos de dados e todos os tipos de referência são ampliados para o tipo de dados Object. Isso significa que você pode converter qualquer tipo para Object sem que ocorra um erro System.OverflowException.

    No entanto, quando você converte entre tipos de valor e Object, o Visual Basic executa operações chamadas boxing e unboxing, o que tornará a execução mais lenta.

  • Caracteres de tipo. Object não tem nenhum caractere de tipo literal nem caractere de identificação de tipo.

  • Tipo do Framework. O tipo correspondente no .NET Framework é a classe System.Object.

Exemplo

O exemplo a seguir ilustra uma variável Object apontando para uma instância de objeto.

Dim objDb As Object
Dim myCollection As New Collection()
' Suppose myCollection has now been populated.
objDb = myCollection.Item(1)

Confira também