Quelles sont les différences fonctionnelles les plus importantes entre C# et VB.NET ?

StackOverflow https://stackoverflow.com/questions/11632

  •  08-06-2019
  •  | 
  •  

Question

Il existe certainement une différence dans la syntaxe générale, mais quelles autres distinctions critiques existent ?Il y a quelques des différences, non ?

Était-ce utile?

La solution

Les comparaisons liées sont très approfondies, mais en ce qui concerne les principales différences, je noterais ce qui suit :

  • C# a des méthodes anonymesVB les a aussi maintenant
  • C# a le mot-clé rendement (blocs itérateurs)VB11 a ajouté ceci
  • VB prend en charge liaison tardive implicite (C# a désormais une liaison tardive explicite via le mot-clé dynamique)
  • VB prend en charge les littéraux XML
  • VB n'est pas sensible à la casse
  • Plus d'extraits de code prêts à l'emploi pour VB
  • Plus d'outils de refactoring prêts à l'emploi pour C#Visual Studio 2015 fournit désormais les mêmes outils de refactoring pour VB et C#.

En général, les éléments sur lesquels MS se concentre varient, car les deux langues s'adressent à des publics très différents. Ce billet de blog a un bon résumé des publics cibles.C'est probablement une bonne idée de déterminer à quel public vous appartenez, car cela déterminera le type d'outils que vous obtiendrez de Microsoft.

Autres conseils

Ce sujet a fait l'objet de nombreuses discussions depuis la sortie de .Net 2.0.Regarde ça Wikipédia article pour un résumé lisible.

Cela peut être considéré comme une syntaxe, mais VB.NET est le cas danssensible alors que C# est la casse sensible.

Ce est une référence très complète.

Puisque je suppose que vous pouvez rechercher sur Google, je ne pense pas qu'un lien vers plus de sites soit ce que vous recherchez.

Ma réponse:Choisissez en fonction de l'historique de vos développeurs.C# ressemble plus à JAVA, et probablement à C++.VB.NET était plus facile pour les programmeurs VB, mais je suppose que ce n'est plus vraiment un problème puisqu'il n'y a pas de nouveaux programmeurs .NET venant de l'ancien VB.

Mon opinion est que VB est plus productif que C#, il semble qu'il soit toujours en avance en termes d'outils de productivité (tels qu'Intelisense), et je recommanderais VB plutôt que C# à quelqu'un qui le demande.Bien sûr, quelqu'un qui sait qu'il préfère c# ne le demandera pas, et c# est probablement le bon choix pour lui.

Bien que le sucre de syntaxe sur C#3 ait vraiment poussé la barre plus loin, je dois dire que certains éléments Linq to XML dans VB.Net semblent plutôt sympas et rendent la gestion du XML complexe et profondément imbriqué un peu plus tolérable.Juste un petit peu.

Une différence flagrante réside dans la façon dont ils gèrent les méthodes d'extension (Vb.Net autorise en fait quelque chose que C# ne permet pas - en passant le type sur lequel la méthode d'extension est définie comme ref) : http://blog.gadodia.net/extension-methods-in-vbnet-and-c/

Hormis la syntaxe, plus grand-chose.Ils compilent tous les deux exactement le même IL, vous pouvez donc compiler quelque chose en VB et le refléter en C#.

La plupart des différences apparentes sont dues au sucre syntaxique.Par exemple, VB semble prendre en charge les types dynamiques, mais en réalité, ils sont aussi statiques que ceux de C# - le compilateur VB les comprend.

Visual Studio se comporte différemment avec VB qu'avec C# : il cache de nombreuses fonctionnalités mais ajoute une compilation en arrière-plan (idéale pour les petits projets, monopolisant les ressources pour les grands) et une meilleure prise en charge des extraits de code.

Avec de plus en plus de « magie » du compilateur en C#3, VB.Net a vraiment pris du retard.La seule chose que VB a maintenant que C# n'a pas, c'est le handles mot-clé - et c'est un avantage discutable.

@Tom - c'est vraiment utile, mais un peu obsolète - VB.Net prend désormais également en charge les documents XML avec '''

@Luke - VB.Net n'a toujours pas de méthodes anonymes, mais prend désormais en charge les lambdas.

La plus grande différence à mon avis est la possibilité d’écrire du code dangereux en C#.

Bien que VB.NET prenne en charge la gestion des exceptions de type try...catch, il a toujours quelque chose de similaire à ON ERROR de VB6.ON ERROR peut être sérieusement abusé, et dans la grande majorité des cas, try...catch est bien meilleur ;mais ON ERROR peut être utile lors de la gestion des opérations de délai d'attente COM où l'erreur peut être interceptée, décodée et le "réessayer" final est une simple ligne.Vous pouvez faire la même chose avec try...catch mais le code est beaucoup plus compliqué.

Ce sujet est brièvement décrit sur Wikipédia et Harding.

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

Parcourez-le et prenez vos notes à ce sujet.

Quand il arrive à IL, ce ne sont que des morceaux.Cette insensibilité à la casse n'est qu'une passe de précompilation.Mais le consensus général est que vb est plus verbeux.Si vous pouvez écrire c#, pourquoi ne pas sauver vos yeux et vos mains et écrire la plus petite quantité de code pour faire la même chose.

Une différence flagrante réside dans la façon dont ils gèrent les méthodes d'extension (Vb.Net autorise en fait quelque chose que C# ne permet pas - en passant le type sur lequel la méthode d'extension est définie comme ref) : http://blog.gadodia.net/extension-methods-in-vbnet-and-c/

Scott Hanselman a récemment écrit un article intéressant comparant var et Dim : Retour aux sources:var != Faible

Oui, VB.NET a résolu la plupart des problèmes de VB6 et en a fait un langage POO approprié, c'est-à-dire.Similaire en capacités à C#.Bien que j'ai tendance à préférer C#, je trouve l'ancienne construction VB ON ERROR utile pour gérer les délais d'attente d'interopérabilité COM.Quelque chose à utiliser à bon escient cependant - ON ERROR est facilement abusé !!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top