![]() |
![]() |
![]() |
Neste artigo vou mostrar como usar variáveis locais tipadas implicitamente na linguagem VB .NET (a partir da versão 9.0). |
![]() |
O Visual Basic 9.0 (Visual Studio 2008) foi lançado juntamente com o Microsoft .NET Framework 3.5, em novembro de 2007. Nesta versão, a Microsoft adicionou novos recursos, tais como:
A partir
desta versão podemos criar variáveis tipadas sem definir explicitamente os tipos
de dados.
Você poderia fazer isso em versões anteriores do VB .NET, se Option Strict
estivesse definida como Off, mas a variável era sempre tipada como
Object. Neste caso, o seu tipo é automaticamente inferido com base no seu
valor.
Para utilizar esta nova funcionalidade, Option Infer deve ser definida
como On.
Você pode especificar essa configuração na caixa de diálogo Project Settings
ou incluindo a declaração Option Infer On no início do seu código.
Se você criar um novo projeto no VS, as configurações do projeto terão Option
Infer definido como On por padrão.
![]() |
Qualquer
projeto que for migrado de versão anteriores do VS terão Option Infer
definido como Off.
Se você compilar o seu código usando o compilador VB (vbc) você pode usar
a opção /optioninfer na linha de comando.
No exemplo a seguir temos um código feito no VS 2008 (no VS 2015 é exatamente igual) que mostra como usar a inferência de tipo:
Se você passar o cursor sobre qualquer uma das variáveis você verá uma dica de ferramenta que mostra que eles estão realmente sendo fortemente tipadas.
Assim :
- nome é inferida como um String,
- nascimento é uma data.
- idade é um número inteiro,
- alunos é um array de objetos Pessoa.
Quando
seu código é compilado para a Microsoft Intermediate Language (MSIL),
todas as variáveis são fortemente tipadas.
Usando a ferramenta MSIL Disassembler (ildasm.exe) podemos espiar o
código compilado e verificar que cada variável foi realmente fortemente tipada:
Esse conceito é muito importante para criar e usar consultas LINQ.
Você pode
usar variáveis locais tipadas implicitamente sempre que você quiser que o
compilador determine o tipo de uma variável local e também para armazenar tipos
anônimos, que são frequentemente utilizados em expressões de consulta.
Exemplo feito no Visual Studio Community 2015 :
Module Module1
' Obtem uma lista de clientes
Dim clientes As List(Of Cliente) = Getclientes()
'Retorna os clientes agrupados por pais
Dim paises = From cli In clientes
Order By cli.Pais, cli.Cidade
Group By NomeDoPais = cli.Pais
Into ClientesNoPais = Group, Count()
Order By NomeDoPais
Sub main()
Console.WriteLine(" ======= Exibe os clientes agrupados pelo Pais =============")
Console.WriteLine()
' Exibição do resultado
For Each pais In paises
Console.WriteLine(pais.NomeDoPais & " total =" & pais.Count)
For Each cliente In pais.ClientesNoPais
Console.WriteLine(" pais : " & cliente.Nome & " cidade : " & cliente.Cidade)
Next
Next
Console.ReadKey()
End Sub
Private Function Getclientes() As List(Of Cliente)
Return New List(Of Cliente) From
{
New Cliente With {.Id = 1, .Nome = "Macoratti", .Cidade = "Toronto", .Pais = "Canada"},
New Cliente With {.Id = 2, .Nome = "Jefferson", .Cidade = "Brasilia", .Pais = "Brazil"},
New Cliente With {.Id = 3, .Nome = "Miriam", .Cidade = "Vancouver", .Pais = "Canada"},
New Cliente With {.Id = 4, .Nome = "Janice", .Cidade = "São Paulo", .Pais = "Brazil"},
New Cliente With {.Id = 5, .Nome = "Jessica", .Cidade = "Goiânica", .Pais = "Brazil"}
}
End Function
End Module
Public Class Cliente
Public Property Id() As Integer
Public Property Nome As String
Public Property Cidade As String
Public Property Pais As String
End Class
|
Executando o código acima teremos o seguinte resultado:
Pegue o
projeto completo aqui :
VBNET_Var_local_Tipada_Implicitamente.zip
E os que são de Cristo crucificaram a
carne com as suas paixões e concupiscências.
Gálatas 5:24
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências: