Pergunta

Certamente há uma diferença na sintaxe geral, mas que outras distinções críticas existem?Há alguns diferenças, certo?

Foi útil?

Solução

As comparações vinculadas são muito completas, mas no que diz respeito às principais diferenças, observaria o seguinte:

  • C# possui métodos anônimosVB também tem isso agora
  • C# tem a palavra-chave yield (blocos iteradores)VB11 adicionou isto
  • Suporta VB ligação tardia implícita (C# tem ligação tardia explícita agora por meio da palavra-chave dinâmica)
  • VB suporta literais XML
  • VB não diferencia maiúsculas de minúsculas
  • Mais trechos de código prontos para uso para VB
  • Mais ferramentas de refatoração prontas para uso para C#O Visual Studio 2015 agora fornece as mesmas ferramentas de refatoração para VB e C#.

Em geral, os aspectos em que a MS se concentra variam, porque os dois idiomas são direcionados a públicos muito diferentes. Esta postagem do blog tem um bom resumo dos públicos-alvo.Provavelmente é uma boa ideia determinar em qual público você pertence, porque isso determinará que tipo de ferramentas você receberá da Microsoft.

Outras dicas

Este tópico teve muito debate desde o lançamento do .Net 2.0.Veja isso Wikipédia artigo para um resumo legível.

Isso pode ser considerado sintaxe, mas VB.NET é o caso emsensível enquanto C# é case confidencial.

Esse é uma referência muito abrangente.

Como presumo que você possa pesquisar no Google, não acho que um link para mais sites seja o que você está procurando.

Minha resposta:Escolha com base no histórico de seus desenvolvedores.C# é mais parecido com JAVA e provavelmente com C++.VB.NET foi mais fácil para programadores VB, mas acho que isso não é mais um problema, já que não há novos programadores .NET vindos do antigo VB.

Minha opinião é que VB é mais produtivo que C#, parece que está sempre à frente em termos de ferramentas de produtividade (como intelisense), e eu recomendaria vb em vez de c# para quem perguntar.É claro que alguém que sabe que prefere c# não perguntará, e c# provavelmente é a escolha certa para ele.

Embora o açúcar da sintaxe no C # 3 tenha realmente empurrado a barra para frente, devo dizer que algumas das coisas do Linq to XML no VB.Net parecem muito boas e tornam o manuseio de XML complexo e profundamente aninhado um pouco mais tolerável.Só um pouco.

Uma diferença gritante está em como eles lidam com métodos de extensão (o Vb.Net realmente permite algo que o C# não permite - passando o tipo no qual o método de extensão está sendo definido como ref): http://blog.gadodia.net/extension-methods-in-vbnet-and-c/

Além da sintaxe, não tanto mais.Ambos compilam exatamente no mesmo IL, então você pode compilar algo como VB e refleti-lo em C#.

A maioria das diferenças aparentes são açúcar sintático.Por exemplo, o VB parece suportar tipos dinâmicos, mas na verdade eles são tão estáticos quanto os do C# - o compilador VB os descobre.

O Visual Studio se comporta de maneira diferente com VB e C# - ele esconde muitas funcionalidades, mas adiciona compilação em segundo plano (ótimo para projetos pequenos, consumo excessivo de recursos para projetos grandes) e melhor suporte a snippets.

Com cada vez mais 'mágica' do compilador em C # 3, o VB.Net realmente ficou para trás.A única coisa que o VB tem agora que o C# não tem é o handles palavra-chave - e isso é um benefício discutível.

@Tom - isso é realmente útil, mas um pouco desatualizado - o VB.Net agora também suporta documentos XML com '''

@Luke - VB.Net ainda não possui métodos anon, mas agora oferece suporte a lambdas.

A maior diferença na minha opinião é a capacidade de escrever código inseguro em C#.

Embora o VB.NET suporte o tratamento de exceções do tipo try...catch, ele ainda tem algo semelhante ao ON ERROR do VB6.ON ERROR pode ser seriamente abusado e, na grande maioria dos casos, try...catch é muito melhor;mas ON ERROR pode ser útil ao lidar com operações de tempo limite COM onde o erro pode ser interceptado, decodificado e a "tentar novamente" final é uma simples linha.Você pode fazer o mesmo com try...catch mas o código é muito mais confuso.

Este tópico é brevemente descrito em Wikipedia e Harding.

http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Visual_Basic_.NEThttp://www.harding.edu/fmccown/vbnet_csharp_comparison.html

Basta ler e fazer suas anotações sobre isso.

Quando chega ao IL, são apenas pedaços.Essa insensibilidade a maiúsculas e minúsculas é apenas uma passagem do pré-compilador.Mas o consenso geral é que vb é mais detalhado.Se você pode escrever c #, por que não salvar seus olhos e mãos e escrever uma quantidade menor de código para fazer a mesma coisa.

Uma diferença gritante está em como eles lidam com métodos de extensão (o Vb.Net realmente permite algo que o C# não permite - passando o tipo no qual o método de extensão está sendo definido como ref): http://blog.gadodia.net/extension-methods-in-vbnet-and-c/

Scott Hanselman escrevi recentemente um artigo interessante contrastando var e Dim: Voltar à rotina:var != Escuro

Sim, o VB.NET corrigiu a maioria dos problemas do VB6 e tornou-o uma linguagem OOP adequada - ou seja.Semelhante em habilidades ao C#.Embora eu tenha tendência a preferir C#, considero a antiga construção VB ON ERROR útil para lidar com tempos limite de interoperabilidade COM.Algo para usar com sabedoria - ON ERROR é facilmente abusado!!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top