O documento resume as principais novidades da linguagem Visual Basic 2010, incluindo: (1) co-evolução com C# para receber novos recursos simultaneamente; (2) direcionamento da evolução da linguagem por Anders Hejlsberg; (3) recursos que melhoram a produtividade como implicit line continuation, auto-implemented properties e collection initializer; (4) suporte a lambda expressions, array literals e melhorias em parâmetros opcionais.
2. CÓDIGO DA SESSÃO: DEV401
Novos recursos do Microsoft Visual
Basic 2010
Alexandre Tarifa
Desenvolvedor .NET
Microsoft MVP, MCP, MCAD, MCTS e MCT
Site: http://www.alexandretarifa.com.br
E-mail: alexandre@alexandretarifa.com.br
@alexandretarifa
3. Agenda
Evolução e direcionamento
Migração
Evolução da linguagem
Novidades do Visual Basic 10
4
4. Co-Evolution - VB.Net e C#
Nova linguagem/compilador - novos recursos
serão desenvolvidos simultaneamente;
Quando o time de VB .NET desenvolver um novo
recurso, as duas linguagens receberão este
recurso e vice-versa.
5
5. Direção
Anders Hejlsberg - Direciona a evolução do
VB.NET e do C#
No TechEd nos Estados Unidos foi o
apresentador das palestras: Futuro do VB.Net e
Futuro do C#.
6
7. Migração
Qual a melhor estratégia de migração?
Pontos
Tipo de aplicação
Linguagem
Manipulação de dados
Complexidade do código
Migrar toda aplicação? (Interop Forms Toolkit)
http://msdn.microsoft.com/en-
us/vbasic/bb419144.aspx
8
9. Migração e evolução
Linguagem
VB -> Visual Basic .Net
Aplicação desktop
Visual Basic 6 -> Windows forms ou WPF
Aplicação Web
VB Script -> ASP.NET
RIA
XXX -> Silverlight
Mobile
XXX -> Windows Mobile ou Windows Phone
Serviços
COM+/MTS -> Web Service, Enterprise Services ou WCF
Aplicações de negócio
10
XXX -> Visual Studio Lightswitch
10. Mitos da linguagem
POO
Mais elegante
Mais performance
Mais poderoso
A Microsoft vai acabar com o VB
VB é para iniciantes
C# é mais difícil
....
11
12. Visual Basic 10 – Novos recursos
produtividade e qualidade
• Objetivo de fazer mais com menos linhas de
código;
• A qualidade x produtividade na quantidade de
digitação foi um dos focos da nova versão;
• Alinhar e igualar as features do C# e evoluir a
linguagem.
13
13. Visual Basic 10 – Implicit Line Continuation
O caractere underscore “_” é usado no Visual
Basic para indicar que a linha corrente será
quebrada em outra linha. O VB 10 remove este
requisito para a quebra de linha.
14
14. Visual Basic 10 – Implicit Line Continuation
O caractere é implicito nas situações seguintes:
Antes de Depois de
, (vírgula). (ponto), > (atributos) ({(abre colchetes), < % = X
(começar a expressão (XML literais))
),},] (ao fechar), %> (fechar expressão) X
Todas as chaves do LINQ (Aggregate, Distinct, From, Group
By, Group Join, Join, Let, Order By, Select, Skip, Skip While, X X
Take, Take While, Where, In, Into, On, Ascending,
Descending)
Operadores (+ , - , * , / , , ^ , >> , << , Mod, & , +=
, -= , *= , /= , = , ^= , >>= , <<= , &= , < , <= , > X
, >= , <> , Is, IsNot, Like, And, Or, Xor, AndAlso, OrElse)
With (inicializador de objetos) X
15
16. Visual Basic 10 – Auto Implemented
Properties
• Para criar uma entidade de classe simples ou
containers para dados, podemos utilizar a
seguinte estrutura:
17
17. Visual Basic 10 – Auto Implemented
Properties
Auto-implemented properties oferece uma
sintaxe simples com apenas uma linha:
O compilador gera um atributo com o mesmo
nome que a propriedade com _ como
prefixo.
18
18. Visual Basic 10 – Auto Implemented
Properties
Pode ser usado com valores default.
Auto-implemented properties não pode ter
parametros e não podem ser declarados como
ReadyOnly ou WriteOnly.
19
20. Visual Basic 10 – Collection Initializer
Inicializador de coleções oferece um forma de
inicializar uma coleção tipada e uma série de valores
através de uma expressão simples:
Cada elemento após o a chave “From” atribui os
valores como se fosse o método Add.
21
22. Visual Basic 10 – Lambda
• As Lambda Expressions são funções anônimas que
podem conter expressões e declarações, e que podem
ser usadas para criar expressões ou Delegates.
• No VB 2008, a palavra chave é function, limitando a
trabalhar sempre com expressões que retornam um
valor.
• Podemos trabalhar agora também com Sub,
permitindo expressões que não retornam um valor.
• Também podemos trabalhar com multiplas linhas,
permitindo um desenvolvimento de funções ou
expressões mais complexas
23
24. Visual Basic 10 – ArrayLiterals
ArrayLiterals oferece uma sintaxe compacta para
declaração de um array com inferência do tipo
pelo compilador.
ArrayLiteral aninhados podem ser utilizados
para a produção de arrays multi dimensionais.
25
26. Visual Basic 10 – Melhorias em parâmetros
opcionais
• A utilização de parâmetros opcionais já é bem
popular no Visual Basic, onde podemos criar um
parâmetro e já atribuir um valor default e
mesmo que na chamada este valor não seja
informado, o compilador atribui o valor
desejado;
• No Visual Basic 10 podemos atribuir parâmetro
com valor default nulo.
27
28. Visual Basic 10 – Dynamic Support
• O .Net Framework 4 introduz suporte para utilização de
objetos de linguagens dinâmicas, como IronPython ou
IronRuby, e a criação de objeto dinâmicos, dentro da
própria linguagem (VB ou C#). Isto torna possível a
inclusão de métodos dinâmicos em linguagens
estáticas, como são o VB.NET ou C#, através da
Dynamic Language Runtime (DLR).
29
29. Visual Basic 10 – Dynamic Support
Nenhuma linha de código foi modificada no compilador
para oferecer suporte a esse recurso. Ainda podemos
trabalhar com Late-bound da mesma maneira que nas
versões anteriores do Visual Basic.
O que mudou é o código no Visual Basic Runtime
(Microsoft.VisualBasic.dll), reconhece a interface
IDynamicMetaObjectProvider que fornece o DLR.
Se um objeto implementa essa interface, o tempo de
execução do Visual Basic irá construir uma chamada
DLR e o objeto e sua linguagem vai injetar a sua
execução dinamicamente.
30
30. Visual Basic 10 – Dynamic Support
Por exemplo, as bibliotecas padrão do Python contém
um arquivo chamado random.py com um método
chamado shuffle que pode ser usada para reorganizar
os elementos em uma matriz aleatoriamente.
31
31. Visual Basic 10 – Dynamic Support
Em tempo de execução, o Visual Basic vê que o
objeto implementa
IDynamicMetaObjectProvider e, portanto, passa
o controle para o DLR, que se comunica com o
Python e executa o método (passando junto a
matriz que foi definida no Visual Basic como um
argumento para o método)
32
33. Embed Interop Types
COM Interop, Object Model Primary Assemblies (PIAs)
necessitam ser distribuidos para a máquina dos usuários
causando problemas de versionamento, dependencia e
problemas que já estamos acostumados.
O Visual Basic 2010 permite que as aplicações executem sem
requerer que as PIAs exista na máquina do cliente, através da
geração de tipos que serão responsáveis pela realização das
chamadas de interoperabilidade para a biblioteca COM.
Estes tipos são inferidos pelo compilador, para que o Common
Language Runtime (CLR) pode identificá-los através de
assemblies, e apenas os tipos de PIA que são absolutamente
necessários serão copiados.
34
34. Embed Interop Types
Por default esta opção já
está ativa para novos
projetos, mas em projetos
legado basta alterar a
propriedade da referência.
35
35. Multi targeting
Praticamente todos os recursos do Visual Basic 2010 poderão
ser utilizados em projetos do .NET Framework 2.0 ou.NET
Framework 3.5 utilizando o Visual Studio 2010.
Isso significa que todos os recursos apresentados, funcionarão
em projetos existentes sem a necessidade de
redirecionamento para o .NET Framework 4.
A única exceção são os Embed Interop Types que tenha uma
dependência em tipos que utilizem recursos do .NET
Framework 4.
36
37. Visual Studio LightSwitch
Projeto iniciado pelo time de Visual Basic
Permite a criação de aplicações de negócio e
banco de dados com muita facilidade
38