Quelques différences entre C# et VB.NET (non-exhaustif)
Voici les avantages les plus flagrants de VB.NET sur C# :
- VB supporte les paramètres optionnels (C# ne le supporte que depuis sa version 4)
- VB supporte le "late-binding" (appel d'une propriété/fonction avec son nom, sans connaitre le type de l'objet (pour les objets COM))
- L'espace de nom Microsoft.VisualBasic donne une compatibilité par rapport à VB6. Il est à éviter si une solution plus performante existe.
- L'espace "My" implémente de nombreux appels WMI ou d'IO, ainsi que plusieurs "raccourcis" dans la gestion des ressources et paramètres d'applications. (VB8+)
- VB supporte la structure With
- Gestion des évènements simplifiée dans les fenêtres et contrôles
- On peut définir une méthode d'interface avec un nom différent que celui proposé au départ (si on veut redéfinir une fonction dans la classe avec un même nom mais une action différente)
- Support du mot-clé When dans le bloc Catch (exemple :
Catch ex as ComException When ex.ErrNumber = 30
) - Compilation "as you type" : le pré-compilateur repère vos fautes de syntaxe en même temps que votre frappe et vous évite de compiler pour rien.
- XML Litéral n'est pas implémenté en C#.
- Les Custom Events ne sont pas implémentés en C#.
Une liste des différences entre C# et VB.NET plus complète existe ici.
/!\ Attention ce document est ancien et beaucoup de choses ont changé depuis. VB.NET a rattrapé certaines fonctionnalités de C# et vice-versa. De plus, chacun a ajouté de nouvelles fonctionnalités non-reprises