Visual Basic 9 - Inferência de Tipo (Type Inference)

by Jenner Maciejewsky 1. maio 2008 08:33

Introdução

Como dito no post anterior, os novos recursos, inseridos na nova versão do Visual Basic (9.0), tem relação direta com o LINQ, pois o LINQ faz uso de diversos recursos que até então não existia no Framework, é o caso da inferência de tipo que é de suma importância ao LINQ. No entanto é possível utilizar esses novos recursos de forma individual mesmo que o LINQ não esteja em uso.

 

Inferência de Tipos ou Tipos Implicitos

A Inferência de Tipos permite ao compilador, mesmo em tempo de designer, deduzir qual o tipo real de uma variável com base no valor ou expressão desta durante sua declaração e inicialização. Nas versões anteriores do Visual Basic era necessário fornecer o tipo da variável no momento em que esta era declarada, caso contrário o compilador interpretava que essa variável era do tipo Object, e o verdadeiro tipo da variável era identificado após compilação.

 

Code Snippet
  1.  
  2. Module Module1
  3.  
  4.     Sub Main()
  5.         Dim a = 3
  6.         Dim b = 3D
  7.         Dim c = 3.5
  8.         Dim d = "Jenner Maciejewsky"
  9.         Dim e = Date.Now
  10.         Dim countries = New Country With {.Nome = "Brasil", .Capital = "Brasilia"}
  11.  
  12.     End Sub
  13.  
  14. End Module
  15.  
  16. Class Country
  17.     Public Nome As String
  18.     Public Capital As String
  19. End Class

 

O Exemplo acima poderia ser escrito da forma tradicional assim:

Code Snippet
  1.  
  2. Dim a As Integer = 3
  3. Dim b As Decimal = 3
  4. Dim c As Double = 3.5
  5. Dim d As String = "Jenner Maciejewsky"
  6. Dim e As Date = Date.Now
  7. Dim countries As Country = New Country With {.Nome = "Brasil", .Capital = "Brasilia"}
  8.  
  9. Class Country
  10.     Public Nome As String
  11.     Public Capital As String
  12. End Class

 

Com a inferência de tipos o código consegue ficar mais limpo, mas é preciso lembrar que sempre que você resolver utilizar a inferência é preciso inicializar a sua variável no instante em que você a declara, atribuindo assim um valor à mesma desde que não seja nulo.

 

Identificando os tipos em tempo de Designer

 

Durante todo o tempo que você está trabalhando em seu código, as vezes você precisa saber qual o tipo de uma determinada variável (principalmente quando você não padroniza os nomes de variáveis). O Visual Studio permite conhecer o tipo passando apenas o mouse sobre a variável, em tempo de designer, e um tooltip aparece informando o tipo declarado.

Observe na imagem abaixo como o Visual Basic 2005 se comporta:

 

Figura 01: Visual Basic 2005, declarando variáveis sem tipos definidos image Figura 02: Visual Basic 2005, declarando variáveis com tipos definidosimage 

 

No exemplo acima observe que o compilador não consegue identificar o tipo da variável a mesmo que essa tenha sido inicializada com valor 3. O mesmo não ocorre com a variável c pois essa foi definida seu tipo.

 

Observe na imagem abaixo que mesmo as variáveis sendo declaradas sem explicitar o tipo, ainda assim o compilador consegue saber o tipo da variável a partir do valor inicializado.

 

Figura 03: Visual Basic 2008, declarando variáveis sem tipos definidos Figura 01: Exemplificando Inferencia de Tipo em Tempo de Designer no V isual Basic 9 Figura 04: Visual Basic 2008, declarando variáveis sem tipos definidos Figura 02: Exemplificando Inferencia de Tipo em Tempo de Designer no V isual Basic 9

No exemplo ao passar o mouse sobre a variável a, o compilador consegue retornar à IDE o tipo desta variável, usando como referência para esse tipo o valor que esta foi inicializada. Na variável b, apesar desta está recebendo um valor "inteiro", o compilador interpretou que esta é do tipo decimal, pois ao final do valor de inicialização um Literal Type Character (D) foi adicionado para forçar que o valor é do tipo decimal.

 

Comportamento em tempo de execução:

 

Primeiro vamos verificar como o código acima é executado no Visual Basic 2005, e como este interpreta os tipos das variáveis que não foram declaradas.

Figura 05: Visual Basic 2005, código em execução. Comportamento do Compilador com os tipos
Figura 05: Visual Basic 2005, código em execução. Comportamento do Compilador com os tipos

Na parte inferior da figura 05, observe que em tempo de execução os types das variáveis, que não foram definidos durante o designer, foram identificadas como do tipo Object, mesmo que o compilador tenha identificado o tipo dos valores dessas (veja coluna Value).

 

Observe agora o mesmo código em execução no Visual Basic 2008 que os tipos de cada variável são bem definidos pelo compilador:

 

Figura 06: Visual Basic 2008, código em execução. Comportamento do Compilador com os tipos
Figura 3: Codigo VB em Execução, exemplificando a Inferencia de Tipo

Observação importante:


Para que a inferência de tipo ocorra no Visual Basic 9.0, é necessário que o Option Infer esteja on. Você pode alterar esse valor nas propriedades do projeto e alterando o valor de Option Infer para ON:

  • No menu Project, escolha <nome do projeto> Properties...
  • Na opção Compile, altere o valor de Option Infer para ON

Propriedade do Projeto

ou se preferir no seu código digite na primeira linha

Option Infer On

até o proximo post... 

 

Jenner Maciejewsky Rocha 
MVP Visual Basic 

 

 

Share this post :

Tags: , , , , , , ,

Artigos | Blog | MSDN

Os comentários estão fechados

Posts Antigos

Awards