Visite guidée du langage C#A tour of the C# language

C# (prononcé « voir Sharp ») est un langage de programmation moderne, orienté objet et de type sécurisé.C# (pronounced "See Sharp") is a modern, object-oriented, and type-safe programming language. C# prend sa source dans la famille de langages C et sera immédiatement reconnaissable aux programmeurs en C, C++, Java et JavaScript.C# has its roots in the C family of languages and will be immediately familiar to C, C++, Java, and JavaScript programmers.

Cette visite guidée fournit une vue d’ensemble des principaux composants du langage dans C# 8 et versions antérieures.This tour provides an overview of the major components of the language in C# 8 and earlier. Si vous souhaitez explorer le langage par le biais d’exemples interactifs, consultez la présentation des didacticiels C# .If you want to explore the language through interactive examples, try the introduction to C# tutorials.

C# est un langage orienté objet, mais C# inclut de plus la prise en charge de la programmation orientée composant.C# is an object-oriented language, but C# further includes support for component-oriented programming. La conception logicielle moderne s’appuie de plus en plus sur les composants logiciels sous la forme de packages de fonctionnalités autonomes et autodescriptifs.Contemporary software design increasingly relies on software components in the form of self-contained and self-describing packages of functionality. La clé de ces composants est qu’ils présentent un modèle de programmation avec des propriétés, des méthodes et des événements.Key to such components is that they present a programming model with properties, methods, and events. Ils ont des attributs qui fournissent des informations déclaratives sur le composant.They have attributes that provide declarative information about the component. Ils intègrent leur propre documentation.They incorporate their own documentation. C# fournit des constructions de langage pour prendre en charge directement ces concepts, en faisant de C# un langage naturel dans lequel créer et utiliser des composants logiciels.C# provides language constructs to support directly these concepts, making C# a natural language in which to create and use software components.

Plusieurs fonctionnalités C# vous aident à construire des applications robustes et durables.Several C# features aid in the construction of robust and durable applications. Le garbage collection libère automatiquement la mémoire occupée par des objets inutilisés inaccessibles.Garbage collection automatically reclaims memory occupied by unreachable unused objects. La gestion des exceptions offre une approche structurée et extensible de la détection et de la récupération des erreurs.Exception handling provides a structured and extensible approach to error detection and recovery. La conception de type sécurisé du langage rend impossible la lecture des variables non initialisées, l’indexation des tableaux au-delà de leurs limites ou l’exécution de conversions de type non vérifiées.The type-safe design of the language makes it impossible to read from uninitialized variables, to index arrays beyond their bounds, or to perform unchecked type casts.

C# a un système de type unifié.C# has a unified type system. Tous les types C#, y compris les types primitifs tels que int et double, héritent d’un seul type object racine.All C# types, including primitive types such as int and double, inherit from a single root object type. Par conséquent, tous les types partagent un ensemble d’opérations communes, et des valeurs de tous types peuvent être stockées, transmises et exploitées de manière cohérente.Thus, all types share a set of common operations, and values of any type can be stored, transported, and operated upon in a consistent manner. En outre, C# prend en charge les types référence et les types valeur définis par l’utilisateur, ce qui permet l’allocation dynamique d’objets, ainsi que le stockage en ligne de structures légères.Furthermore, C# supports both user-defined reference types and value types, allowing dynamic allocation of objects as well as in-line storage of lightweight structures.

Pour vous assurer que les bibliothèques et les programmes C# peuvent évoluer au fil du temps d’une manière compatible, l’accent est mis sur le contrôle de version dans la conception de c#.To ensure that C# programs and libraries can evolve over time in a compatible manner, much emphasis has been placed on versioning in C#'s design. De nombreux langages de programmation ne sont pas très attentifs à ce problème.Many programming languages pay little attention to this issue. Par conséquent, les programmes écrits dans ces autres langages s’arrêtent plus souvent que nécessaire lorsque des versions plus récentes des bibliothèques dépendantes sont introduites.As a result, programs written in those other languages break more often than necessary when newer versions of dependent libraries are introduced. Les aspects de la conception de C# qui ont été directement influencés par les considérations virtual relatives override à la gestion des versions incluent les modificateurs et séparés, les règles de résolution de surcharge de méthode et la prise en charge des déclarations de membres d’interface explicites.Aspects of C#'s design that were directly influenced by versioning considerations include the separate virtual and override modifiers, the rules for method overload resolution, and support for explicit interface member declarations.

Dans les versions plus récentes, C# a adopté d’autres paradigmes de programmation.In more recent versions, C# has embraced other programming paradigms. C# a inclus des fonctionnalités qui prennent en charge des techniques de programmation fonctionnelle comme les expressions lambda.C# has included features that support functional programming techniques like lambda expressions. D’autres nouvelles fonctionnalités prennent en charge la séparation des données et des algorithmes, comme les critères spéciaux.Other new features support separating data and algorithms, like pattern matching.

Hello WorldHello world

Le programme « Hello, World » est souvent utilisé pour présenter un langage de programmation.The "Hello, World" program is traditionally used to introduce a programming language. Le voici en C# :Here it is in C#:

using System;

class Hello
{
    static void Main()
    {
        Console.WriteLine("Hello, World");
    }
}

Les fichiers sources C# ont généralement l’extension de fichier .cs.C# source files typically have the file extension .cs. Pour créer ce programme, commencez par télécharger et installer le Kit SDK .net Core.To create this program, first download and install the .NET Core SDK. Ensuite, exécutez la commande dotnet new console -o hello pour créer un nouveau programme et un script de génération.Then, execute the command dotnet new console -o hello to create a new program and a build script. Le programme et le script de compilation se trouvent Program.cs dans hello.csprojles fichiers et, respectivement.The program and build script are in the files Program.cs and hello.csproj, respectively. Vous générez et exécutez l’application avec run les commandes suivantes :You build and run the application with the run commands:

cd hello
dotnet run

Le programme génère la sortie suivante :The program produces the following output:

Hello, World!

Le programme « Hello, World » commence par une directive using qui fait référence à l’espace de noms System.The "Hello, World" program starts with a using directive that references the System namespace. Les espaces de noms représentent un moyen hiérarchique d’organiser les bibliothèques et les programmes C#.Namespaces provide a hierarchical means of organizing C# programs and libraries. Les espaces de noms contiennent des types et d’autres espaces de noms ; par exemple, l’espace de noms System contient plusieurs types, notamment la classe Console référencée dans le programme, et d’autres espaces de noms, tels que IO et Collections.Namespaces contain types and other namespaces—for example, the System namespace contains a number of types, such as the Console class referenced in the program, and a number of other namespaces, such as IO and Collections. Une directive using qui fait référence à un espace de noms donné permet l’utilisation non qualifiée des types membres de cet espace de noms.A using directive that references a given namespace enables unqualified use of the types that are members of that namespace. En raison de la directive using, le programme peut utiliser Console.WriteLine comme raccourci pour System.Console.WriteLine.Because of the using directive, the program can use Console.WriteLine as shorthand for System.Console.WriteLine.

La classe Hello déclarée par le programme « Hello, World » a un membre unique, la méthode nommée Main.The Hello class declared by the "Hello, World" program has a single member, the method named Main. La méthode Main est déclarée avec le modificateur statique.The Main method is declared with the static modifier. Si les méthodes d’instance peuvent faire référence à une instance d’objet englobante particulière avec le mot clé this, les méthodes statiques fonctionnent sans référence à un objet particulier.While instance methods can reference a particular enclosing object instance using the keyword this, static methods operate without reference to a particular object. Par convention, une méthode statique nommée Main sert de point d’entrée d’un programme.By convention, a static method named Main serves as the entry point of a program.

La sortie du programme est générée par la méthode WriteLine de la classe Console dans l’espace de noms System.The output of the program is produced by the WriteLine method of the Console class in the System namespace. Cette classe est fournie par les bibliothèques de classes standard, qui, par défaut, sont référencées automatiquement par le compilateur.This class is provided by the standard class libraries, which, by default, are automatically referenced by the compiler.

Éléments du langage C#Elements of the C# language

Il y a beaucoup d’autres choses à apprendre sur C#.There's a lot more to learn about C#. Les rubriques suivantes fournissent une vue d’ensemble des éléments du langage C#.The following topics provide an overview of the elements of the C# language. Ces vues d’ensemble fournissent des informations de base sur tous les éléments de la langue et vous donnent les informations nécessaires pour approfondir les tâches :These overviews provide basic information about all elements of the language and give you the information necessary to dive deeper:

  • Structure du programmeProgram Structure
    • Découvrez les concepts clés d’organisation du langage C# : programmes, espaces de noms, types, membres et assemblys.Learn the key organizational concepts in the C# language: programs, namespaces, types, members, and assemblies.
  • Types et variablesTypes and Variables
    • Découvrez les types valeur, les types référence et les variables en langage C#.Learn about value types, reference types, and variables in the C# language.
  • ExpressionsExpressions
    • Les expressions sont construites à partir de d’opérandes et d’opérateurs.Expressions are constructed from operands and operators. Les expressions produisent une valeur.Expressions produce a value.
  • InstructionsStatements
    • On utilise des instructions pour exprimer les actions d’un programme.You use statements to express the actions of a program.
  • Classes et objetsClasses and objects
    • Les classes sont les plus fondamentales des types de C#.Classes are the most fundamental of C#'s types. Les objets sont des instances d’une classe.Objects are instances of a class. Les classes sont générées à l’aide de membres, qui sont également traités dans cette rubrique.Classes are built using members, which are also covered in this topic.
  • TableauxArrays
    • Un tableau est une structure de données qui contient un certain nombre de variables qui sont accessibles par des indices calculés.An array is a data structure that contains a number of variables that are accessed through computed indices.
  • InterfacesInterfaces
    • Une interface définit un contrat qui peut être implémenté par des classes et structures.An interface defines a contract that can be implemented by classes and structs. Une interface peut contenir des méthodes, des propriétés, des événements et des indexeurs.An interface can contain methods, properties, events, and indexers. Une interface ne fournit pas d’implémentations des membres qu’elle définit ; elle spécifie simplement les membres qui doivent être fournis par les classes ou les structs qui implémentent l’interface.An interface doesn't provide implementations of the members it defines—it merely specifies the members that must be supplied by classes or structs that implement the interface.
  • DéléguésDelegates
    • Un type délégué représente des références aux méthodes avec une liste de paramètres et un type de retour particuliers.A delegate type represents references to methods with a particular parameter list and return type. Les délégués permettent de traiter les méthodes en tant qu’entités qui peuvent être affectées à des variables et passées comme paramètres.Delegates make it possible to treat methods as entities that can be assigned to variables and passed as parameters. Les délégués sont similaires au concept de pointeurs de fonction dans d’autres langages, mais contrairement aux pointeurs de fonction, les délégués sont orientés objet et de type sécurisé.Delegates are similar to the concept of function pointers found in some other languages, but unlike function pointers, delegates are object-oriented and type-safe.
  • AttributsAttributes
    • Les attributs permettent aux programmes de spécifier des informations déclaratives supplémentaires sur les types, les membres et d’autres entités.Attributes enable programs to specify additional declarative information about types, members, and other entities.

Notes

Ces articles s’appliquent à C# 7,0 et versions ultérieures.These articles apply to C# 7.0 and later. Certaines fonctionnalités ne sont peut-être pas disponibles dans les versions antérieures.Some features may not be available in earlier versions.