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
-
- Module Module1
-
- Sub Main()
- Dim a = 3
- Dim b = 3D
- Dim c = 3.5
- Dim d = "Jenner Maciejewsky"
- Dim e = Date.Now
- Dim countries = New Country With {.Nome = "Brasil", .Capital = "Brasilia"}
-
- End Sub
-
- End Module
-
- Class Country
- Public Nome As String
- Public Capital As String
- End Class
O Exemplo acima poderia ser escrito da forma tradicional assim:
Code Snippet
-
- Dim a As Integer = 3
- Dim b As Decimal = 3
- Dim c As Double = 3.5
- Dim d As String = "Jenner Maciejewsky"
- Dim e As Date = Date.Now
- Dim countries As Country = New Country With {.Nome = "Brasil", .Capital = "Brasilia"}
-
- Class Country
- Public Nome As String
- Public Capital As String
- 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  | Figura 02: Visual Basic 2005, declarando variáveis com tipos definidos |
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 04: Visual Basic 2008, declarando variáveis sem tipos definidos  |
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
|
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
|
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
ou se preferir no seu código digite na primeira linha
Option Infer On
até o proximo post...
Jenner Maciejewsky Rocha
MVP Visual Basic