Dev (Back & Front)ARTIGO

Convertendo código VB.NET para C#

Será que é possível converte código VB.NET para código C#? Não são todas as linguagens da plataforma .NET interoperáveis?

Antes de responder diretamente a esta pergunta, vou fazer outra : Por que alguém iria querer converter código VB.NET para C# ?

Agora vou responder a esta última :

Motivos para converter código VB.NET para C# :

  1. Você simplesmente não gosta do VB.NET e da sintaxe da linguagem; acha horrível a sintaxe do VB.NET e pronto! Tudo bem, gosto não se discute.
  2. As vezes o código VB.NET pode ser mais lento do que seu correspondente código C#.
  3. A linguagem VB.NET , apesar de todos os esforços e para manter certa compatibilidade com versões anteriores, ainda não é totalmente tipada . O VB.NET não verifica em tempo de compilação variáveis declaradas que nunca serão usadas; variáveis não inicializadas; isto pode levar a alguns problemas. Quer ver? Execute o código abaixo e diga se estou certo ou errado…(Veja o resultado na tela ao final do código).
Module Module1

   Sub Main()

      Dim j As String

      If j Is Nothing Then

         Console.WriteLine("A variável j é => Nothing")

      End If

 

     If j = "" Then

       Console.WriteLine("A variável j é => uma string vazia")

     End If

     Console.ReadLine()

End Sub

End Module

Bem, agora vou responder a primeira pergunta: É possível converter integralmente um código VB.NET para C# ?

Não. Infelizmente não é possível escrever uma ferramenta que faça a conversão completa e sem problemas do VB.NET para C#, simplesmente por que a sintaxe do VB.NET ainda permite ao programador VB.NET escrever código ambíguo (dados do tipo objeto e arrays).

Alguns conselhos antes de você tentar efetuar a migração:

  • Procure migrar somente código VB.NET robusto e que esteja funcionando;
  • Muitas vezes você terá que mudar alguma coisa no seu código VB.NET antes de fazer a migração;
  • Use Option Strict on e Option Compare Binary;
  • O tratamento de erro clássico: On error não é suportado no C#;
  • Modules não são suportados, mas classes Friend que possuírem somente métodos Shared podem substituí-los;
  • Altere Select Case com condições e filtros de exceção.

Se você quiser voltar atrás abaixo alguns em caso de você se arrepender:

1. http://authors.aspalliance.com/aldotnet/examples/translate.aspx

2. http://www.ragingsmurf.com/vbcsharpconverter.aspx

3. http://www.kamalpatel.net/ConvertCSharp2VB.aspx

Até o próximo artigo!

é referência em Visual Basic no Brasil e autor dos livros "Aprenda Rápido: ASP" e "ASP, ADO e Banco de Dados na Internet". Mantenedor do site macoratti.net.

Ver perfil