Eu desenvolvo no Visual Basic .Net desde 2001 e adoro e odeio !!!
A ordem de apresentação desses pontos é baseada apenas na ordem em que ele veio à minha mente ...
No vb.net com visual studio, há uma quebra de linha visual entre cada método, propriedade. Para muitas pessoas, não é um bom motivo para preferir vb.net em vez de c #, mas não entendo por que a equipe de c # da Microsoft não a implementou. Há um suplemento que desenha essa linha no c #, mas obrigado novamente a Microsoft a ter uma equipe de c # e uma equipe do Visual Basic que não se comuniquem.
No vb.net, ao criar um winform, você tem duas caixas de combinação no visual studio na parte superior do editor e pode gerar automaticamente um evento automaticamente ao selecionar um evento na caixa de combinação correta. Quando você anexa dezenas de eventos por dia, pode ser muito complicado não ter esse recurso. Com o c #, você tem um pequeno botão na parte superior da grade de propriedades que pode gerar eventos, mas não é rápido como no vb.net. Além disso, se você anexar um evento de controle em c # e excluir o controle no formulário, o delegado criado no código gerado automaticamente para manipular o evento deverá ser excluído manualmente. Obrigado novamente Microsoft.
No vb.net, quando você tenta modificar um método que contém uma consulta linq sem modificar a própria consulta, não há problema, mas em c #, todo o código do método está bloqueado. Se você tiver muitas consultas linq ou expressão lambda, o recurso de edição e continuação será rapidamente uma boa coisa. Ok, um pouco de exagero ... mas :)
No vb.net, quando você cria um nome de método e toca em enter, o 'end sub' será criado automaticamente. Em c #, faça você mesmo. Ok, se você tiver o re-sharper ou o DevXpress instalado, será melhor, mas por que todos esses recursos, exceto os grandes, não foram implementados em c #.
No vb.net, quando você tem erros no seu código, os erros são exibidos automaticamente e quando você o corrige, esses erros são removidos da pilha em tempo real. No c #, você precisa criar seu projeto para perceber que corrigiu com êxito ou não os erros especificados. Por que a equipe do c # não colocou uma opção para verificar erros em tempo real, como no vb.net. Com uma solução grande, nenhuma verificação de erro em tempo real pode ser uma ótima otimização de desempenho, mas eu adoro ver uma pilha de erros desaparecer enquanto a corrigo.
Como outras pessoas mencionaram, acho mais fácil ler a condição vb.net se ... enfim, selecione case ... end select, mas com o suporte de pintura devexpress, esqueça o que eu disse.
Com o vb.net, existem muitos bugs no visual studio. Apenas para mencionar uma no visual studio 2010, os intellisens não filtram a enumeração corretamente se você tiver o modo "comum" ativado em vez de "todos".
Com o vb.net, você é visto como um cara falso, porque, estaticamente, mais programadores ruins usam o vb.net em vez do c # porque o c # é mais difícil de aprender e promove melhores práticas de programação.
Como outro dito, o programador de c # tem mais chances de ter um bom trabalho com mais dinheiro.
Na cabeça do cliente, vb.net = cara que programa em seu porão com um bolinho de espaguete de código. c # = uau, você é muito inteligente. O fato é que não é porque você programa em c # que você faz um bom programa, mas estaticamente, sim.
Com todos esses pontos, optei por converter todo o meu código vb em c #. Eu programo com todas as melhores práticas de orientação a objetos, padrão de design, código limpo com padrões e sintaxe estrita e posso programar assim por 50 anos, mas aos olhos da comunidade, não sou um bom programador. Vou converter meu código em c # sem outras práticas recomendadas e serei outra pessoa; um cara legal que você deve respeitar ..... :( que piada ... !!! mas é a realidade.