# Visual Basic .NET

Visual Basic.NET é uma linguagem de programação totalmente orientada a objetos e com suporte total a UML, criada pela Microsoft e distribuída com o Visual Studio .NET.
O Visual Basic.NET é um produto extremamente diferente do antigo Visual Basic 6.0, não podendo ser considerada uma versão seguinte. Não apenas a maneira de programar foi alterada, mas todo conceito de orientação a objetos trouxe poder para a linguagem. A Microsoft simplesmente descontinuou o antigo Visual Basic 6.0 tornando o produto parecido com as demais linguagens do Visual Studio, parecido em questões de recursos e portabilidade pois o Visual Basic.NET ainda é muito diferente de linguagens como o Visual C++, C#, etc. Porém esta nova versão aproximou o Visual Basic.NET das grandes linguagens de programação, aumentando a aceitação dos programadores Java e até mesmo C++, embora os programadores Java que migram para a plataforma .NET da Microsoft prefiram o C#.$^[$
Apesar da linguagem ser parecida com o antigo Visual Basic 6.0 a migração para a nova plataforma e utilização do Visual Basic.NET é mais fácil para programadores que utilizam linguagens orientada a objeto. Os programadores do antigo Visual Basic 6.0 acostumados com a orientação a eventos encontram algumas dificuldades na utilização do Visual Basic.NET.
Os desenvolvedores podem criar uma ampla gama de aplicativos Web, móveis, do Windows e do Office, com a mesma base .Net Framework, que tem atualmente a versão 4.0.

## Versões do Visual Basic .NET

Desde novembro de 2007, existem quatro versões do Visual Basic .NET implementadas por The Visual Basic Team.

### Visual Basic .NET (VB 7)

O Visual Basic .NET original foi lançado em 2002 juntamente com Visual C# e ASP.NET. Alterações muito significativas quebraram a compatibilidade com versões anteriores e criaram alguma tensão na comunidade de programadores.

### Visual Basic .NET 2003 (VB 7.1)

Esta versão do Visual Basic foi lançada com a versão 1.1 da Framework .NET. Novos recursos incluíam o suporte para o .NET Compact Framework e um upgrade ao wizard do VB. Foi melhorada a performance e fiabilidade do IDE. Adicionalmente, Visual Basic .NET 2003 tinha uma versão acadêmica (Visual Studio .NET 2003 Academic Edition - VS03AE).

### Visual Basic 2005 (VB 8.0)

A partir do VB 8.0, a Microsoft largou o termo .NET na designação do produto. Nesta versão, foram adicionadas bastantes novos recursos, incluindo:
* Editar e Continuar
* Avaliação de expressões quando no Design;
* Melhoria no conversor VB-para-VB.NET;
* Palavra-chave Using, simplificando a utilização de objetos que necessitam do padrão Dispose para libertar recursos;
* Suporte para o tipo de dados inteiro sem sinal, muito utilizado em outras linguagens;
* Programação genérica;
* Operator overloading;
* Comentários em XML que podem ser processados por utilitários tais NDoc para produzir documentação "automática";
* Operador IsNot que funciona desta forma: 'If X IsNot Y', que é equivalente a: 'If Not X Is Y'. Ganhou fama quando se descobriu que fora patenteado pela Microsoft.

#### Visual Basic 2005 Express

Como parte da linha de produtos Visual Studio, a Microsoft criou um conjunto de ambientes de desenvolvimento gratuitos para aprendizes: a série Visual Studio 2005 Express. Visual Basic 2005 Express Edition é uma das edições dessa série de aplicações, que foi depois substituído pelo Visual Basic 2008 Express Edition do Visual Studio Express

### Visual Basic 2008 (VB 9.0)

O Visual Basic 9.0 foi lançado juntamente com o Microsoft .NET Framework 3.5, a 19 de novembro de 2007. Nesta versão, a Microsoft adicionou bastantes novos recursos, tais como:
* O operador condicionante If(boolean, value, value), para substituir a função IIf.
* Tipos anónimos.
* Suporte para LINQ.
* expressões Lambda.
* literais XML.

### Visual Basic 2010 (VB 10.0)

Em 2007, a Microsoft planejou a utilização de DLR para o Visual Basic 10, conhecido como VBx. Contudo, a partir de Agosto de 2009, não houve mais notícias sobre o desenvolvimento do VBx com DLR. Como o C#, o Visual Basic poderá aceder a objetos de linguagens dinâmicas construídas no DLR tais como IronPython e IronRuby.
Para uma lista completa das características do Visual basic 10.0, ver o documento em "What's New in Visual Basic 2010" publicado pela Microsoft.
Juntamente com o Visual Basic 2010 obtemos o .NET Framework 4.

## Sintaxe VB.NET e VB

O seguinte exemplo simples demonstra a similaridade entre sintaxe VB.NET e VB. Ambos os exemplos aparecem numa caixa de mensagem dizendo "Olá, Mundo" com um botão OK.
Exemplo VB Clássico:
Exemplo VB.NET:
Note que todas as chamadas de procedimento devem ser feitas com parênteses em VB.NET, enquanto no VB6 houve diferentes convenções para funções (parênteses necessários) e subcategorias (sem parênteses permitida, a não ser chamada utilizando a palavra-chave Call). Além disso, note que os nomes comando1 e Button1 não são obrigatórios. No entanto, esses são nomes padrão para um botão de comando VB6 e VB.NET, respectivamente. Existe uma função chamada MsgBox no namespace Microsoft.VisualBasic, que pode ser usado do mesmo modo que a função correspondente no VB6. Existe uma controvérsia sobre qual função para usar como uma melhor prática (não apenas restrito a mensagem mostrando caixas, mas também a outras características do namespace Microsoft.VisualBasic). Alguns programadores preferem e defendem que linguagens de código com características específicas se tornam mais legíveis (por exemplo, utilizando int (C #) ou Integer (VB.NET) em vez de System.Int32). O exemplo a seguir mostra uma diferença entre VB6 e VB.NET. Ambos os exemplos descarregam a janela ativa.
Exemplo VB Clássico:
Exemplo VB.NET:
Note o "cmd" sendo substituído com o prefixo 'btn', conforme a nova convenção anteriormente mencionada. Os seguintes são equivalentes:
Exemplo VB 6:
Exemplo VB.NET:

## Críticas

Os muitos utilizadores do Visual Basic queixaram-se do fato das versões iniciais do Visual Basic .NET abandonarem um grande número de características da linguagem disponíveis no VB6 (não mais vendido pelo Microsoft), e pelas alterações na semântica das características que se mantiveram; por exemplo, no VB.NET os parâmetros são passados (por default) por valor, não por referência. Detratores referem-se pejorativamente ao VB.NET como Visual Fred ou DOTNOT. A 8 de Março de 2005, uma petição foi criada em resposta à recusa da parte da Microsoft em estender o suporte ao VB6.

## Limitações

As versões anteriores do VB tinham várias limitações no código:
* Nº de variáveis usadas no mesmo código.
* Nº de arquivos abertos no mesmo código.
* Nº de janelas abertas no mesmo código, dentre outras.
No VB.NET existem limitações físicas, segundo a Microsoft, mas são tão altas que não há chances de serem atingidas pelo desenvolvedor, a ponto de não serem nem documentadas oficialmente.$^[$

## Arquivos Gerados

Arquivos com extensão .vb e outros que podem ser incluídos no projeto, tais como ASP (extensão .aspx), XML (extensão .xml), arquivos HTML (extensão .html), etc. Não há distinção de arquivos de classes, janelas, controles e outros, pois todos terão a extensão .vb.$^[$