Esse artigo faz parte da revista .NET Magazine edição 50. Clique aqui para ler todos os artigos desta edição

erttulo style="MARGIN: 0cm 0cm 0pt">

Estamos atualmente no meio de uma onda de atualizações impressionante. No último um ano e meio a Microsoft tem evoluído rapidamente suas tecnologias de desenvolvimento de software. Nesse período tivemos o lançamento do .Net 3.0, do .Net 3.5, do C# 3.0, do Visual Basic 9.0, e já se fala no VB X. Acompanhando esses lançamentos estão o Visual Studio e suas atualizações intermediárias, como o SP1 do Visual Studio 2005 e o próprio Visual Studio 2008. Mal o .Net 3.5 saiu do forno no final do ano passado e já temos suas primeiras atualizações disponíveis para avaliação, como o ASP.NET 3.5 Extensions Preview, que traz, entre outros, o esperado ADO.Net Entity Framework e o ASP.Net MVC.

Veremos agora uma pequena parte dessa avalanche: a evolução da linguagem Visual Basic da versão 8.0 para a versão 9.0. Apesar de pequena diante de tantas novidades, as mudanças são impressionantes, e continuam seguindo claramente o objetivo de tornar a linguagem mais produtiva para o desenvolvedor, além de trazer novos horizontes tecnológicos antes impossíveis, proibitivamente caros ou difíceis de realizar. Vamos às novidades!

 

Nota:

Você pode baixar a especificação formal da linguagem na página de downloads da Microsoft (já em sua versão com Silverlight) em http://www.microsoft.com/beta/downloads, e procurando por “Visual Basic Language Specification”.

 

Setup

Para acompanhar o artigo, você vai precisar do Visual Studio 2008. Uma aplicação console simples deve funcionar sem problemas. Não se esqueça de, ao criar um projeto, configurar o mesmo para utilizar o .Net Framework 3.5, conforme exibido na Figura 1, já que o Visual Studio 2008 permite o desenvolvimento tanto no framework 3.5 quanto no 3.0 e no 2.0.

 

Figura 1. Crie o projeto no VS 2008 escolhendo o .NET 3.5

 

Evolução da linguagem, da ferramenta e do Framework

Vamos evidenciar principalmente a evolução da especificação da linguagem Visual Basic, eventualmente exibindo também melhorias do Framework 3.5, ou da IDE do Visual Studio 2008. Ainda assim, é importante ressaltar que é possível programar com Visual Basic 9.0 para o .Net Framework 2.0, conforme exemplos dados ao final do artigo. Mesmo que o conjunto Linguagem/IDE/Framework tenha seus membros independentes uns dos outros, trabalharemos com o Framework 3.5 porque sem ele algumas funcionalidades do VB9 não são possíveis de serem utilizadas.

É bom separar a linguagem do framework e da IDE. Você pode, como já falei, trabalhar com VB9 e .Net Framework 2.0. A linguagem poderia, conceitualmente, até trabalhar sem o .Net Framework, apesar de ter sido construída amarrada a ele. Você pode trabalhar com VB9 sem o Visual Studio, somente com o SDK, assim como qualquer pessoa poderia criar um compilador para VB9 ou uma IDE que utilizasse os compiladores da Microsoft, ou outro.

Assim, é bom separar melhorias na linguagem das melhorias do Framework, que são muitas e muito boas, e também das melhorias da IDE, que também não são menos importantes. Vamos a elas.

Object initializers

A linguagem passa a trazer agora a possibilidade de inicializar o objeto quando ele é criado. Assim, é possível, em única linha de código, declarar, instanciar e inicializar um objeto. A Listagem 1 mostra, no primeiro exemplo, uma variável declarada e inicializada. No segundo exemplo a variável é inicialmente declarada, e inicializada somente na linha seguinte. Note como o grande responsável pela declaração da inicialização é a palavra-chave “With”.

Internamente o compilador do VB9 vai gerar uma chamada para a instanciação e outras para a inicialização, que serão chamadas após o construtor. Assim, caso o objeto possua um construtor parametrizado que vai atribuir valor às suas variáveis internas, e for utilizada também a opção dos object initializer para inicializar o objeto, primeiro rodará o construtor, e em seguida as atribuições às variáveis do inicializador. É como se, após a instanciação do objeto, chamássemos a antiga palavra-chave “With” e construíssemos o objeto a partir dela, conforme exibido no terceiro exemplo. É importante conhecer essa ordem para não encontrar erros inesperados no código.

 

Listagem 1. Exemplo de Object Initializers

'declarando e iniciando em uma única linha

Dim cli1 As New Cliente With {.ID = 3, .Desc = "Descrição"}

'declarando em uma linha

Dim cli2 As Cliente

'e inicializando em outra

cli2 = New Cliente With {.ID = 3, .Desc = "Descrição"}

'inicialização à moda antiga

Dim cli3 As New Cliente

With cli3

    .ID = 3

    .Desc = "desc"

End With

 

Ternary operator

O Visual Basic agora tem também um operador ternário, já disponível anteriormente no C#, e que permite que você avalie uma condição booleana, e retorne um resultado com forte tipagem, tudo em uma única linha de código.

Anteriormente já existia a função IIF (que é parte da classe Microsoft.VisualBasic.Interaction), mas esta função tinha o inconveniente de retornar sempre o tipo Object, obrigando-nos a fazer conversão dos tipos, ou, em último caso, digitar um DirectCast na linha de código, deixando o código menos elegante. A Listagem 2 mostra como vai ficar agora a operação com um operador ternário, e em seguida, como ficaria com a função IIF. O operador nada mais é que uma nova possibilidade da palavra-chave If, que retornará sempre o tipo que recebeu.

A construção é simples e intuitiva, e segue o modelo da função IIF. O primeiro parâmetro é uma verificação booleana, que, se for verdadeiro retornará o segundo parâmetro, e se for falso, retornará o terceiro.

 

Listagem 2. Exemplo de Ternary Operator

'nova construção com ternary

'note que retorna um objeto construído

'on demmand com object initializer (veja o with)

Dim cli4 As Cliente = If(cli1.ID = 3, cli1, New Cliente With {.ID = -1, .Desc = String.Empty})

'construção antiga

...

Quer ler esse conteúdo completo? Tenha acesso completo