Introduction au langage C# et au .NET FrameworkIntroduction to the C# Language and the .NET Framework

C# est un langage élégant et de type sécurisé orienté objet qui permet aux développeurs de créer toute une gamme d'applications sûres et solides exécutées sur .NET Framework.NET Framework.C# is an elegant and type-safe object-oriented language that enables developers to build a variety of secure and robust applications that run on the .NET Framework.NET Framework. Vous pouvez utiliser C# pour créer des applications clientes Windows, services Web XML, composants distribués, applications client-serveur, applications de base de données et bien plus encore.You can use C# to create Windows client applications, XML Web services, distributed components, client-server applications, database applications, and much, much more. Visual C# fournit un éditeur de code avancé, des concepteurs d’interface utilisateur pratiques, un débogueur intégré et de nombreux autres outils pour faciliter le développement d’applications basées sur le langage C# et le .NET Framework.NET Framework.Visual C# provides an advanced code editor, convenient user interface designers, integrated debugger, and many other tools to make it easier to develop applications based on the C# language and the .NET Framework.NET Framework.

Note

La documentation de Visual C# suppose que vous avez une compréhension des concepts de base de la programmation.The Visual C# documentation assumes that you have an understanding of basic programming concepts. Si vous êtes un débutant complet, vous souhaiterez peut-être consulter Visual C# Express, qui est disponible sur le web.If you are a complete beginner, you might want to explore Visual C# Express, which is available on the Web. Vous pouvez également tirer parti de la documentation et des ressources Web sur C# pour acquérir des compétences de programmation pratiques.You can also take advantage of books and Web resources about C# to learn practical programming skills.

Langage C#C# Language

La syntaxe C# est très expressive, mais elle est également simple et facile à apprendre.C# syntax is highly expressive, yet it is also simple and easy to learn. La syntaxe avec accolades de C# sera facile à reconnaître pour toute personne familiarisée avec C, C++ ou Java.The curly-brace syntax of C# will be instantly recognizable to anyone familiar with C, C++ or Java. Les développeurs qui connaissent un de ces langages peuvent généralement commencer à travailler efficacement en C# en très peu de temps.Developers who know any of these languages are typically able to begin to work productively in C# within a very short time. La syntaxe C# simplifie beaucoup des complexités de C++ et fournit des fonctionnalités puissantes, comme les types valeur Nullable, les énumérations, les délégués, les expressions lambda et l’accès direct à la mémoire, qui ne figurent pas dans Java.C# syntax simplifies many of the complexities of C++ and provides powerful features such as nullable value types, enumerations, delegates, lambda expressions and direct memory access, which are not found in Java. C# prend en charge des méthodes et types génériques qui fournissent de meilleures performances et plus de sécurité pour les types, et des itérateurs, qui permettent aux implémenteurs de classes de collection de définir des comportements d’itération personnalisés qui peuvent être utilisés facilement par le code client.C# supports generic methods and types, which provide increased type safety and performance, and iterators, which enable implementers of collection classes to define custom iteration behaviors that are simple to use by client code. Les expressions LINQ (Language Integrated Query)Language-Integrated Query (LINQ) font des requêtes fortement typées une construction de première classe du langage.LINQ (Language Integrated Query)Language-Integrated Query (LINQ) expressions make the strongly-typed query a first-class language construct.

En tant que langage orienté objet, C# prend en charge les concepts d’encapsulation, d’héritage et de polymorphisme.As an object-oriented language, C# supports the concepts of encapsulation, inheritance, and polymorphism. Toutes les variables et méthodes, y compris la méthode Main, le point d’entrée de l’application, sont encapsulées dans des définitions de classe.All variables and methods, including the Main method, the application's entry point, are encapsulated within class definitions. Une classe peut hériter directement d'une classe parent, mais peut implémenter un nombre quelconque d'interfaces.A class may inherit directly from one parent class, but it may implement any number of interfaces. Les méthodes qui substituent des méthodes virtuelles dans une classe parente requièrent le mot-clé override pour éviter toute redéfinition accidentelle.Methods that override virtual methods in a parent class require the override keyword as a way to avoid accidental redefinition. En C#, un struct est comme une classe légère : il s’agit d’un type alloué par la pile qui peut implémenter des interfaces mais ne prend pas en charge l’héritage.In C#, a struct is like a lightweight class; it is a stack-allocated type that can implement interfaces but does not support inheritance.

Outre ces principes orientés objet de base, C# facilite le développement de composants logiciels à travers plusieurs constructions de langage novatrices, y compris ce qui suit :In addition to these basic object-oriented principles, C# makes it easy to develop software components through several innovative language constructs, including the following:

  • Des signatures de méthode encapsulées appelées délégués, qui activent les notifications d’événement de type sécurisé.Encapsulated method signatures called delegates, which enable type-safe event notifications.

  • Les propriétés, qui sont utilisées comme accesseurs pour les variables de membre privé.Properties, which serve as accessors for private member variables.

  • Les attributs, qui fournissent des métadonnées déclaratives sur les types au moment de l’exécution.Attributes, which provide declarative metadata about types at run time.

  • Commentaires de documentation XML inline.Inline XML documentation comments.

  • LINQ (Language Integrated Query)Language-Integrated Query (LINQ), qui fournit des fonctions de requête intégrées sur diverses sources de données. which provides built-in query capabilities across a variety of data sources.

Si vous devez interagir avec d’autres logiciels Windows, comme les objets COM ou les DLL Win32 natives, vous pouvez faire cela dans C# via un processus appelé « Interopérabilité ».If you have to interact with other Windows software such as COM objects or native Win32 DLLs, you can do this in C# through a process called "Interop." L’interopérabilité permet aux programmes C# de faire presque tout ce qu’une application native C++ peut faire.Interop enables C# programs to do almost anything that a native C++ application can do. C# prend même en charge les pointeurs et le concept de code « unsafe » pour les cas où l’accès direct à la mémoire est absolument essentiel.C# even supports pointers and the concept of "unsafe" code for those cases in which direct memory access is absolutely critical.

Le processus de génération de C# est simple par rapport à C et C++ et plus souple qu’avec Java.The C# build process is simple compared to C and C++ and more flexible than in Java. Il n’existe aucun fichier d’en-tête distinct, et les types et méthodes n’ont pas à être déclarés dans un ordre particulier.There are no separate header files, and no requirement that methods and types be declared in a particular order. Un fichier source C# peut définir un nombre quelconque de classes, structs, interfaces et événements.A C# source file may define any number of classes, structs, interfaces, and events.

Voici des ressources C# supplémentaires :The following are additional C# resources:

Architecture de la plateforme .NET Framework.NET Framework Platform Architecture

C# s’exécute sur .NET Framework.NET Framework, un composant intégral de Windows qui inclut un système d’exécution virtuel appelé Common Language Runtime (CLR) et un ensemble unifié de bibliothèques de classes.C# programs run on the .NET Framework.NET Framework, an integral component of Windows that includes a virtual execution system called the common language runtime (CLR) and a unified set of class libraries. CLR est l’implémentation commerciale par Microsoft de la Common Language Infrastructure (CLI), une norme internationale qui sert de base pour la création d’environnements de développement et d’exécution dans lesquels les langages et bibliothèques fonctionnent ensemble en toute transparence.The CLR is the commercial implementation by Microsoft of the common language infrastructure (CLI), an international standard that is the basis for creating execution and development environments in which languages and libraries work together seamlessly.

Le code source écrit en C# est compilé dans un langage intermédiaire (IL) qui est conforme à la spécification CLI.Source code written in C# is compiled into an intermediate language (IL) that conforms to the CLI specification. Le code de langage intermédiaire et les ressources, comme les bitmaps et les chaînes, sont stockés sur disque dans un fichier exécutable appelé assembly, généralement avec l’extension .exe ou .dll.The IL code and resources, such as bitmaps and strings, are stored on disk in an executable file called an assembly, typically with an extension of .exe or .dll. Un assembly contient un manifeste qui fournit des informations sur les types de l’assembly, sa version, sa culture et ses conditions de sécurité.An assembly contains a manifest that provides information about the assembly's types, version, culture, and security requirements.

Lorsque le programme C# est exécuté, l’assembly est chargé dans CLR, qui peut prendre différentes mesures selon les informations contenues dans le manifeste.When the C# program is executed, the assembly is loaded into the CLR, which might take various actions based on the information in the manifest. Ensuite, si les exigences de sécurité sont satisfaites, CLR effectue une compilation juste à temps (JIT) pour convertir le code de langage intermédiaire en instructions machine natives.Then, if the security requirements are met, the CLR performs just in time (JIT) compilation to convert the IL code to native machine instructions. CLR fournit également d’autres services connexes liés au nettoyage automatique de la mémoire (garbage collection), à la gestion des exceptions et à la gestion des ressources.The CLR also provides other services related to automatic garbage collection, exception handling, and resource management. Le code exécuté par CLR est parfois appelé « code managé », contrairement au « code non managé » qui est compilé dans le langage machine natif ciblant un système spécifique.Code that is executed by the CLR is sometimes referred to as "managed code," in contrast to "unmanaged code" which is compiled into native machine language that targets a specific system. Le diagramme suivant illustre les relations de compilation et d’exécution des fichiers de code source de C#, les bibliothèques de classes .NET Framework, les assemblys et CLR.The following diagram illustrates the compile-time and run-time relationships of C# source code files, the .NET Framework class libraries, assemblies, and the CLR.

Du code source C# à l'exécution machineFrom C# source code to machine execution

L’interopérabilité des langages est une fonctionnalité essentielle de .NET Framework.NET Framework.Language interoperability is a key feature of the .NET Framework.NET Framework. Étant donné que le code de langage intermédiaire produit par le compilateur C# est conforme à la spécification de type commun (CTS), le code de langage intermédiaire généré à partir de C# peut interagir avec du code qui a été généré à partir des versions .NET de Visual Basic, Visual C++ ou un des plus de 20 autres langages compatibles CTS.Because the IL code produced by the C# compiler conforms to the Common Type Specification (CTS), IL code generated from C# can interact with code that was generated from the .NET versions of Visual Basic, Visual C++, or any of more than 20 other CTS-compliant languages. Un seul assembly peut contenir plusieurs modules écrits dans différents langages .NET, et les types peuvent se référencent mutuellement comme s’ils avaient été écrits dans la même langue.A single assembly may contain multiple modules written in different .NET languages, and the types can reference each other just as if they were written in the same language.

Outre les services de runtime .NET Framework.NET Framework inclut également une bibliothèque étendue de plus de 4 000 classes organisées en espaces de noms qui fournissent une grande variété de fonctionnalités utiles pour tous les éléments allant de l’entrée et la sortie de fichiers pour la manipulation de chaînes à l’analyse de XML, en passant par les contrôles Windows Forms.In addition to the run time services, the .NET Framework.NET Framework also includes an extensive library of over 4000 classes organized into namespaces that provide a wide variety of useful functionality for everything from file input and output to string manipulation to XML parsing, to Windows Forms controls. Une application C# standard utilise énormément la bibliothèque de classes .NET Framework.NET Framework pour gérer les tâches fastidieuses.The typical C# application uses the .NET Framework.NET Framework class library extensively to handle common "plumbing" chores.

Pour plus d’informations sur .NET Framework, consultez Présentation de Microsoft .NET Framework.For more information about the .NET Framework, see Overview of the Microsoft .NET Framework.

Voir aussiSee also