Visual Basic .NET - Visual Basic .NET

Visual básico
VB.NET Logo.svg
Paradigma Multi-paradigma : estruturado , imperativo , orientado a objetos , declarativo , genérico , reflexivo e orientado a eventos
Projetado por Microsoft
Desenvolvedor Microsoft
Apareceu pela primeira vez 2001 ; 20 anos atras ( 2001 )
Versão estável
2019 versão 16.9 / 2 de março de 2021 ; 5 meses atrás ( 2021-03-02 )
Disciplina de digitação Estático , forte e fraco , seguro e inseguro , nominativo
Plataforma .NET Framework , Mono , .NET
SO Principalmente Windows
também no Android , BSD , iOS , Linux , macOS , Solaris e Unix
Licença Compilador Roslyn : Licença Apache 2.0
Extensões de nome de arquivo .vb
Local na rede Internet docs .microsoft .com / dotnet / visual-basic /
Implementações principais
.NET Framework SDK , Roslyn Compiler e Mono
Dialetos
Microsoft Visual Basic
Influenciado por
Visual Basic Clássico
Influenciado
Pequeno Básico

Visual Basic , originalmente chamado de Visual Basic .NET ( VB.NET ), é um multi-paradigma , orientada a objeto linguagem de programação , implementado em .NET , Mono , eo .NET Framework . A Microsoft lançou o VB.NET em 2002 como o sucessor de sua linguagem Visual Basic original , cuja última versão foi o Visual Basic 6.0. Embora a parte ".NET" do nome tenha sido descartada em 2005, este artigo usa "Visual Basic [.NET]" para se referir a todas as linguagens Visual Basic lançadas desde 2002, a fim de distingui-las do Visual Basic clássico . Junto com C # e F # , é uma das três principais linguagens voltadas para o ecossistema .NET. Em 11 de março de 2020, a Microsoft anunciou que a evolução da linguagem VB.NET foi concluída.

O ambiente de desenvolvimento integrado (IDE) da Microsoft para desenvolvimento em Visual Basic é o Visual Studio . A maioria das edições do Visual Studio são comerciais ; as únicas exceções são Visual Studio Express e Visual Studio Community , que são freeware . Além disso, o .NET Framework SDK inclui um compilador de linha de comando freeware chamado vbc.exe. Mono também inclui um compilador VB.NET de linha de comando.

Visual Basic é freqüentemente usado em conjunto com a biblioteca de GUI do Windows Forms para fazer aplicativos de desktop para Windows . Programar para Windows Forms com Visual Basic envolve arrastar e soltar controles em um formulário usando um designer de GUI e escrever o código correspondente para cada controle.

Sintaxe

Visual Basic usa instruções para especificar ações. A declaração mais comum é uma declaração de expressão, consistindo em uma expressão a ser avaliada, em uma única linha. Como parte dessa avaliação, funções ou sub-rotinas podem ser chamados e variáveis podem ser atribuídos novos valores. Para modificar a execução sequencial normal de instruções, o Visual Basic fornece várias instruções de fluxo de controle identificadas por palavras-chave reservadas. A programação estruturada é suportada por várias construções, incluindo duas construções de execução condicional ( If... Then... Else... End Ife Select Case... Case... End Select) e três construções de execução iterativa (loop) ( Do... Loop, For... Toe For Each). A instrução For... Totem seções separadas de inicialização e teste, ambas as quais devem estar presentes. (Veja os exemplos abaixo.) A For Eachinstrução percorre cada valor em uma lista.

Além disso, no Visual Basic:

  • Não existe uma maneira unificada de definir blocos de instruções. Em vez disso, certas palavras-chave, como "If ... Then" ou "Sub" são interpretadas como iniciadores de sub-blocos de código e têm palavras-chave de encerramento correspondentes, como "End If" ou "End Sub".
  • As instruções são encerradas com dois pontos (":") ou com o final da linha . As instruções de várias linhas no Visual Basic são ativadas com "_" no final de cada linha. A necessidade do caractere de continuação de sublinhado foi amplamente removida na versão 10 e nas versões posteriores.
  • O sinal de igual ("=") é usado tanto na atribuição de valores às variáveis ​​quanto na comparação.
  • Os colchetes (parênteses) são usados ​​com matrizes , tanto para declará-los quanto para obter um valor em um determinado índice em um deles. Visual Basic usa colchetes para definir os parâmetros de sub-rotinas ou funções.
  • Uma aspa simples (') ou a palavra-chave REM, colocada no início de uma linha ou após qualquer número de caracteres de espaço ou tabulação no início de uma linha, ou após outro código em uma linha, indica que o (restante do) linha é um comentário .

Exemplo simples

A seguir está um programa Visual Basic muito simples, uma versão do exemplo clássico " Hello, World! ", Criado como um aplicativo de console:

Module Module1

    Sub Main()
        ' The classic "Hello, World!" demonstration program
        Console.WriteLine("Hello, World!")
    End Sub

End Module

Ele imprime " Hello, World! " Em uma janela de linha de comando . Cada linha tem um propósito específico, como segue:

Module Module1

Esta é uma definição de módulo. Módulos são uma divisão de código, que pode conter qualquer tipo de objeto, como constantes ou variáveis, funções ou métodos, ou classes, mas não podem ser instanciados como objetos como classes e não podem herdar de outros módulos. Os módulos servem como contêineres de código que podem ser referenciados a partir de outras partes de um programa.
É uma prática comum que um módulo e o arquivo de código que o contém tenham o mesmo nome. No entanto, isso não é obrigatório, pois um único arquivo de código pode conter mais de um módulo e / ou classe.

Sub Main()

Esta linha define uma sub-rotina chamada "Principal". "Principal" é o ponto de entrada, onde o programa começa a ser executado.

Console.WriteLine("Hello, world!")

Esta linha executa a tarefa real de escrever a saída. Console é um objeto do sistema, que representa uma interface de linha de comando (também conhecida como "console") e que concede acesso programático aos fluxos padrão do sistema operacional . O programa chama o método WriteLine do console , que faz com que a string passada a ele seja exibida no console.

Em vez de Console.WriteLine, pode-se usar MsgBox, que imprime a mensagem em uma caixa de diálogo em vez de em uma janela de linha de comando.

Exemplo complexo

Este trecho de código gera o Triângulo do Floyd para o console:

Imports System.Console

Module Program

    Sub Main()
        Dim rows As Integer

        ' Input validation.
        Do Until Integer.TryParse(ReadLine("Enter a value for how many rows to be displayed: " & vbcrlf), rows) AndAlso rows >= 1
            WriteLine("Allowed range is 1 and {0}", Integer.MaxValue)
        Loop
      
        ' Output of Floyd's Triangle
        Dim current As Integer = 1
        Dim row As Integer 
        Dim column As Integer
        For row = 1 To rows
            For column = 1 To row
                Write("{0,-2} ", current)
                current += 1
            Next

            WriteLine()
        Next
    End Sub

    ''' <summary>
    ''' Like Console.ReadLine but takes a prompt string.
    ''' </summary>
    Function ReadLine(Optional prompt As String = Nothing) As String
        If prompt IsNot Nothing Then
            Write(prompt)
        End If

        Return Console.ReadLine()
    End Function

End Module

Comparação com o Visual Basic clássico

Se o Visual Basic .NET deve ser considerado apenas outra versão do Visual Basic ou uma linguagem completamente diferente, é um tópico de debate. Existem novas adições para oferecer suporte a novos recursos, como tratamento de exceção estruturada e expressões em curto-circuito. Além disso, duas mudanças importantes de tipo de dados ocorreram com a mudança para VB.NET: em comparação com o Visual Basic 6, o Integer tipo de dados foi duplicado em comprimento de 16 bits para 32 bits, e o Long tipo de dados foi duplicado em comprimento de 32 bits para 64 bits. Isso é verdade para todas as versões do VB.NET. Um inteiro de 16 bits em todas as versões do VB.NET agora é conhecido como um Short. Da mesma forma, o editor de formulários do Windows é muito semelhante em estilo e função ao editor de formulários do Visual Basic.

As coisas que têm mudado significativamente são a semântica-dos de uma linguagem de programação baseada em objetos sendo executado em um determinista , contou-referência do motor baseado em COM para uma totalmente orientada a objeto linguagem suportada pelo .NET Framework , que consiste de uma combinação do Common Language Runtime (uma máquina virtual que usa coleta de lixo geracional e um mecanismo de compilação just-in-time ) e uma biblioteca de classes muito maior . A maior amplitude do último também é um problema com o qual os desenvolvedores de VB precisam lidar ao chegar à linguagem, embora isso seja, de certa forma, resolvido pelo recurso My no Visual Studio 2005.

As mudanças alteraram muitas suposições básicas sobre a coisa "certa" a se fazer com relação ao desempenho e facilidade de manutenção. Algumas funções e bibliotecas não existem mais; outros estão disponíveis, mas não tão eficientes quanto as alternativas "nativas" do .NET. Mesmo que sejam compilados, a maioria dos aplicativos Visual Basic 6 convertidos exigirá algum nível de refatoração para aproveitar ao máximo as vantagens da nova linguagem. A documentação está disponível para cobrir mudanças na sintaxe, aplicativos de depuração, implantação e terminologia.

Exemplos comparativos

Os exemplos simples a seguir comparam a sintaxe VB e VB.NET. Eles assumem que o desenvolvedor criou um formulário, colocou um botão nele e associou as sub-rotinas demonstradas em cada exemplo com o manipulador de eventos click do botão mencionado. Cada exemplo cria uma caixa de mensagem "Hello, World" depois que o botão no formulário é clicado.

Visual Basic 6:

Private Sub Command1_Click()
    MsgBox "Hello, World"
End Sub

VB.NET (classe MsgBox ou MessageBox pode ser usada):

Private Sub Button1_Click(sender As object, e As EventArgs) Handles Button1.Click
    MsgBox("Hello, World")
End Sub
  • Tanto o Visual Basic 6 quanto o Visual Basic .NET geram automaticamente as instruções Sube End Subquando o botão correspondente é clicado duas vezes na visualização de design. O Visual Basic .NET também gerará as instruções Classe necessárias End Class. O desenvolvedor precisa apenas adicionar a instrução para exibir a caixa de mensagem "Hello, World".
  • Todas as chamadas de procedimento devem ser feitas com parênteses no VB.NET, enquanto no Visual Basic 6 havia convenções diferentes para funções (parênteses obrigatórios) e subs (sem parênteses permitidos, a menos que sejam chamados com a palavra-chave Call).
  • Os nomes Command1e Button1não são obrigatórios. No entanto, esses são nomes padrão para um botão de comando em Visual Basic 6 e VB.NET, respectivamente.
  • No VB.NET, a Handlespalavra-chave é usada para tornar o sub Button1_Clickum manipulador para o Clickevento do objeto Button1. No Visual Basic 6, os subs do manipulador de eventos devem ter um nome específico que consiste no nome do objeto ("Command1"), um sublinhado ("_") e no nome do evento ("Click", portanto "Command1_Click").
  • Há uma função chamada MessageBox.Showno Microsoft.VisualBasicnamespace que pode ser usada (em vez de MsgBox) de forma semelhante à função correspondente no Visual Basic 6. Há uma controvérsia sobre qual função usar como prática recomendada (não apenas restrita a mostrar caixas de mensagem, mas também em relação outros recursos do Microsoft.VisualBasicnamespace). Alguns programadores preferem fazer as coisas "do jeito .NET", já que as classes do Framework têm mais recursos e são menos específicas para cada linguagem. Outros argumentam que o uso de recursos específicos da linguagem torna o código mais legível (por exemplo, usando int(C #) ou Integer(VB.NET) em vez de System.Int32).
  • Em Visual Basic 2008, a inclusão de ByVal sender as Object, ByVal e as EventArgstornou-se opcional.

O exemplo a seguir demonstra uma diferença entre Visual Basic 6 e VB.NET. Ambos os exemplos fecham a janela ativa .

Visual Basic 6:

Sub cmdClose_Click()
    Unload Me
End Sub

VB.NET:

Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
    Close()
End Sub

O prefixo 'cmd' é substituído pelo prefixo 'btn', em conformidade com a nova convenção mencionada anteriormente.

Visual Basic 6 não fornecia atalhos de operador comuns. Os seguintes são equivalentes:

Visual Basic 6:

Sub Timer1_Timer()
    'Reduces Form Height by one pixel per tick
    Me.Height = Me.Height - 1
End Sub

VB.NET:

Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    Me.Height -= 1
End Sub

Comparação com C #

C # e Visual Basic são as primeiras linguagens da Microsoft feitas para programar no .NET Framework (posteriormente adicionando F # e mais; outros também adicionaram linguagens). Embora C # e Visual Basic sejam sintaticamente diferentes, é aí que a maioria das diferenças termina. A Microsoft desenvolveu essas duas linguagens para fazer parte da mesma plataforma de desenvolvimento .NET Framework. Ambos são desenvolvidos, gerenciados e recebem suporte da mesma equipe de desenvolvimento de linguagem da Microsoft. Eles são compilados na mesma linguagem intermediária (IL), que é executada nas mesmas bibliotecas de tempo de execução do .NET Framework. Embora existam algumas diferenças nas construções de programação, suas diferenças são principalmente sintáticas e, supondo que se evite as bibliotecas de "Compatibilidade" do Visual Basic fornecidas pela Microsoft para ajudar na conversão do Visual Basic 6, quase todos os recursos em VB têm um recurso equivalente em C # e vice-versa. Por último, ambas as linguagens fazem referência às mesmas classes base do .NET Framework para estender sua funcionalidade. Como resultado, com poucas exceções, um programa escrito em qualquer um dos idiomas pode ser executado por meio de um conversor de sintaxe simples para traduzir para o outro. Existem muitos produtos de código aberto e comercialmente disponíveis para essa tarefa.

Exemplos

Olá Mundo!

Aplicativo Windows Forms

Requer um botão chamado Button1.

Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        MsgBox("Hello world!", MsgBoxStyle.Information, "Hello world!") ' Show a message that says "Hello world!".
    End Sub
End Class
Olá Mundo! janela

Aplicação de console

Module Module1

    Sub Main()
        Console.WriteLine("Hello world!") ' Write in the console "Hello world!" and start a new line.
        Console.ReadKey() ' The user must press any key before the application ends.
    End Sub
End Module

Falando

Aplicativo Windows Forms

Requer um TextBox intitulado 'TextBox1' e um botão chamado Button1.

Public Class Form1
    
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        CreateObject("Sapi.Spvoice").Speak(TextBox1.Text)
    End Sub
End Class

Aplicação de console

Module Module1
    Private Voice = CreateObject("Sapi.Spvoice")
    Private Text As String

    Sub Main()
        Console.Write("Enter the text to speak: ") ' Say "Enter the text to speak: "
        Text = Console.ReadLine() ' The user must enter the text to speak.
        Voice.Speak(Text) ' Speak the text the user has entered.
    End Sub
End Module

Histórico de versão

Após o clássico Visual Basic versão 6.0, a primeira versão do Visual Basic .NET estreou em 2002. A partir de 2020, dez versões do Visual Basic .NET foram lançadas.

2002 (VB 7.0)

A primeira versão, Visual Basic .NET, depende do .NET Framework 1.0 . O recurso mais importante é o código gerenciado , que contrasta com o Visual Basic clássico.

2003 (VB 7.1)

O Visual Basic .NET 2003 foi lançado com o .NET Framework 1.1 . Novos recursos incluem suporte para .NET Compact Framework e um assistente de atualização VB melhor . Também foram feitas melhorias no desempenho e na confiabilidade do IDE .NET (principalmente no compilador de segundo plano ) e no tempo de execução. Além disso, o Visual Basic .NET 2003 estava disponível no Visual Studio.NET Academic Edition, distribuído gratuitamente a um certo número de acadêmicos de cada país.

2005 (VB 8.0)

Após o Visual Basic .NET 2003, a Microsoft retirou ".NET" do nome do produto, chamando a próxima versão de Visual Basic 2005.

Para este lançamento, a Microsoft adicionou muitos recursos destinados a reforçar o foco do Visual Basic .NET como uma plataforma de desenvolvimento rápido de aplicativos e diferenciá-lo ainda mais do C # ., Incluindo:

  • Editar e continuar recurso
  • Avaliação da expressão em tempo de design
  • Um pseudo- namespace denominado "My", que fornece:
    • Fácil acesso a certas áreas do .NET Framework que, de outra forma, requerem código significativo para acessar como usar, em vez deMy.Form2.Text = " MainForm "System.WindowsApplication1.Forms.Form2.text = " MainForm "
    • Classes geradas dinamicamente (por exemplo, My.Forms )
  • Conversor VB-to-VB.NET aprimorado
  • Uma palavra-chave "usando", simplificando o uso de objetos que requerem o padrão Dispose para liberar recursos
  • Recurso Just My Code , que oculta (etapas sobre) o código clichê escrito pelo IDE do Visual Studio .NET e o código da biblioteca do sistema durante a depuração
  • Vinculação de fonte de dados, facilitando o desenvolvimento de cliente / servidor de banco de dados

Para preencher as lacunas entre ela mesma e outras linguagens .NET, esta versão adicionou:

Visual Basic 2005 introduziu o IsNotoperador que torna 'If X IsNot Y'equivalente a 'If Not X Is Y'. Ele ganhou notoriedade quando foi descoberto que era o objeto de um pedido de patente da Microsoft.

2008 (VB 9.0)

O Visual Basic 9.0 foi lançado junto com o .NET Framework 3.5 em 19 de novembro de 2007.

Para esta versão, a Microsoft adicionou muitos recursos, incluindo:

2010 (VB 10.0)

Em abril de 2010, a Microsoft lançou o Visual Basic 2010. A Microsoft planejou usar o Dynamic Language Runtime (DLR) para esse lançamento, mas mudou para uma estratégia de coevolução entre o Visual Basic e a linguagem irmã C # para trazer ambas as linguagens em paridade mais próxima entre si. A capacidade inata do Visual Basic de interagir dinamicamente com objetos CLR e COM foi aprimorada para funcionar com linguagens dinâmicas criadas no DLR, como IronPython e IronRuby . O compilador do Visual Basic foi aprimorado para inferir a continuação de linha em um conjunto de contextos comuns, em muitos casos removendo a necessidade dos caracteres de continuação de linha "_". Além disso, o suporte existente de funções embutidas foi complementado com suporte para Subs embutidos, bem como versões multilinhas de ambos Sub e lambdas de função.

2012 (VB 11.0)

O Visual Basic 2012 foi lançado junto com o .NET Framework 4.5 . Os principais recursos introduzidos nesta versão incluem:

  • Programação assíncrona com instruções "async" e "await"
  • Iteradores
  • Hierarquia de chamadas
  • Informação do chamador
  • Palavra-chave "global" em declarações de "namespace"

2013 (VB 12.0)

O Visual Basic 2013 foi lançado junto com o .NET Framework 4.5.1 com Visual Studio 2013. Também pode construir aplicativos .NET Framework 4.5.2 instalando o Developer Pack.

2015 (VB 14.0)

O Visual Basic 2015 (código denominado VB "14.0") foi lançado com o Visual Studio 2015. Os recursos de linguagem incluem um novo "?" operador para executar verificações de nulos em linha e um novo recurso de interpolação de string é incluído para formatar strings em linha.

2017 (VB 15.x)

Visual Basic 2017 (código denominado VB "15.0") foi lançado com Visual Studio 2017. Estende o suporte para novos recursos de linguagem Visual Basic 15 com revisão 2017, 15.3, 15.5, 15.8. Apresenta novas refatorações que permitem organizar o código-fonte com uma ação.

2019 (VB 16.0)

O Visual Basic 2019 (código denominado VB "16.0") foi lançado com o Visual Studio 2019. É a primeira versão do Visual Basic focada no .NET Core.

Desenvolvimento de plataforma cruzada e código aberto

O compilador oficial do Visual Basic é escrito em Visual Basic e está disponível no GitHub como parte da plataforma do compilador .NET . A criação de ferramentas de código aberto para desenvolvimento em Visual Basic tem sido lenta em comparação com C # , embora a plataforma de desenvolvimento Mono forneça uma implementação de bibliotecas específicas do Visual Basic e um compilador compatível com Visual Basic 2005 escrito em Visual Basic, bem como bibliotecas de framework padrão como a biblioteca de GUI do Windows Forms .

SharpDevelop e MonoDevelop são IDEs alternativos de código aberto . O ambiente Gambas também é semelhante, mas distinto do Visual Basic.

Veja também

Referências

Leitura adicional

  1. "Especificação de linguagem Visual Basic 8.0" . Corporação Microsoft. 15 de novembro de 2005 . Recuperado em 10 de dezembro de 2010 .
  2. "Especificação de linguagem Visual Basic 9.0" . Corporação Microsoft. 19 de dezembro de 2007 . Recuperado em 28 de setembro de 2011 .
  3. "Especificação de linguagem Visual Basic 11.0" . Corporação Microsoft. 7 de junho de 2013 . Recuperado em 22 de setembro de 2013 .

links externos