Variations entre les langages de développement
La différence la plus significative parmi les langages de programmation pris en charge est la syntaxe. C++ et Visual Basic ont un historique établi et une base de code existant significative qui ont été pris en compte lors de leur mise à jour pour .NET. Visual C#, par contre, part sur une nouvelle base. Plusieurs rubriques avancées (notamment celles relatives au processus de création et à la définition d'espaces de noms) seront présentées avec l'exemple de code correspondant dans les sections suivantes, mais voici certaines des différences les plus importantes entre les langages.
Respect de la casse : C++ et Visual C# respectent la casse, contrairement à Visual Basic. Toutefois, pour qu'un programme soit conforme CLS, les membres publics ne doivent pas se différencier uniquement sur la base de la casse. Cette restriction permet à Visual Basic (et éventuellement à d'autres langages conformes CLS) de produire des composants et d'utiliser des composants créés dans d'autres langages respectant la casse.
Référencer une bibliothèque : Pour utiliser des classes, qui se trouvent dans des espaces de noms, il est avant tout nécessaire d'obtenir une référence à l'assembly contenant l'espace de noms requis. Tous les programmes .NET utilisent (au minimum) l'espace de noms System, qui se trouve dans Mscorlib.dll (généralement situé dans le répertoire Windows\System). Visual Basic et Visual C# référencent Mscorlib.dll implicitement, mais vous devez inclure la directive de préprocesseur suivante dans un programme d'extensions managées pour C++ :
#using <mscorlib.dll>
Bien que Visual C# et Visual Basic référencent implicitement l'assembly mscorlib, il est nécessaire d'utiliser le commutateur de compilation /reference pour d'autres assemblys. Les bibliothèques référencées se trouvent généralement dans le répertoire de l'application ou dans un sous-répertoire de l'application. Les bibliothèques destinées à une utilisation par de nombreuses applications (par exemple, des outils fournis par des tiers) se trouvent dans le cache de l'assembly (WindowsDirectory\Assembly) et doivent suivre des indications spécifiques. Les fichiers de configuration des applications peuvent fournir des options supplémentaires. Pour les applications ASP.NET, toutefois, les composants doivent se trouver dans le sous-répertoire \Bin sous le point de départ du répertoire virtuel de l'application.
Importation d'un espace de noms : Les classes peuvent être référencées complètement (par exemple, System.IO.FileStream, ce qui est similaire à un nom de chemin d'accès qualifié complet) ou leur espace de noms peut être importé dans le programme, ce qui évite ensuite de qualifier complètement les noms des classes contenues. Pour accéder facilement à des objets System, cet espace de noms doit être importé, comme le montre le tableau suivant.
Extensions managées pour C++ |
|
Visual C# |
|
Visual Basic |
|
Référencer des membres d'objet : Visual Basic et Visual C# prennent en charge le point (.) comme opérateur de résolution de portée qui, par exemple, permet la syntaxe Console.WriteLine lorsque la méthode WriteLine de l'objet Console est référencée. Les extensions managées pour C++ utilisent un double deux-points (::) comme opérateur de résolution.
Déclaration d'objets : Dans les extensions managées pour C++ et dans Visual C# mais pas dans Visual Basic, les variables doivent être déclarées avant de pouvoir être utilisées. Vous créez une nouvelle instance d'un objet en utilisant le mot clé new. Le tableau suivant contient des exemples d'instructions déclaration-création pour chacun des trois langages. Chaque instruction déclare et crée un objet nommé myComp qui est du type Comp et qui se trouve dans l'espace de noms Lib.
C++ |
|
Visual C# |
|
Visual Basic |
|
Point d'entrée d'un programme : Chaque programme exécutable doit avoir un point d'entrée externe, où l'application commence son exécution. La syntaxe n'a pas changé pour les extensions managées pour C++ mais, dans Visual C# et Visual Basic, tout se passe dans une classe. Le code suivant illustre la syntaxe des extensions managées pour C++ :
void main() {
}
Le code suivant illustre la syntaxe Visual C# :
class MainApp {
public static void Main() {
}
}
Le code suivant illustre la syntaxe Visual Basic :
Public Module modmain
Sub Main()
End Sub
End Module
Dans les coulisses, toutefois, le compilateur des extensions managées pour C++ encapsule le point d'entrée dans une classe.
Définition d'un espace de noms et d'une classe : Les trois langages prennent en charge la création d'espaces de noms personnalisés et de classes dans ces espaces de noms. Ces trois langages gèrent cette opération dans du code, avec des syntaxes légèrement différentes. Par exemple, les extensions managées pour C++ utilisent une déclaration de classe managée et les points virgules de fin ne sont pas nécessaires pour les déclarations d'espaces de noms et de classes dans Visual C#. Le code suivant illustre la syntaxe des extensions managées pour C++ :
namespace CompVC {
__gc class StringComponent {
public:
StringComponent() {
}
};
};
Le code suivant illustre la syntaxe Visual C# :
namespace CompCS {
public class StringComponent {
public StringComponent() {...}
}
}
Le code suivant illustre la syntaxe Visual Basic :
Namespace CompVB
Public Class StringComponent
Public Sub New()
End Sub
End Class
End Namespace
Voir aussi
Hello World | Écriture de composants .NET simples | Clients pour les composants simples | Résumé du didacticiel de développement | Annexe A : Outils pour l'exploration des espaces de noms