Movatterモバイル変換


[0]ホーム

URL:


Aller au contenu
Wikipédial'encyclopédie libre
Rechercher

C Sharp

Un article de Wikipédia, l'encyclopédie libre.

Titre correct : « C# ».

En raison de limitations techniques, la typographie souhaitable du titre n’a pu être restituée correctement.
Page d’aide sur l’homonymie

Pour les articles homonymes, voirSharp et.cs.

C#
Logo.
Code en C# retournant à la console : "Hello World!"
Code en C# retournant à la console : "Hello World!"

Date de première versionVoir et modifier les données sur Wikidata
ParadigmeStructuré,impératif,orienté objet
AuteurMicrosoft
Dernière version14.0 ()[1]Voir et modifier les données sur Wikidata
TypageStatique,fort,nominatif
Dialectes1.0, 1.1, 1.2, 2.0 (ECMA), 3.0, 3.5, 4.0, 5.0, 6.0, 7.0, 7.1, 7.2, 7.3, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0
Influencé parC++,Java
A influencéSwift,Vala,F#,Kotlin,TypeScript
ImplémentationsMicrosoft .NET,Mono,DotGNU
Écrit enC#Voir et modifier les données sur Wikidata
Système d'exploitationMultiplate-forme
Site webdocs.microsoft.com/en-us/dotnet/csharpVoir et modifier les données sur Wikidata
Extension de fichier.cs
modifier 

C# (C sharp[siː.ʃɑːp] enanglais britannique) est unlangage deprogrammation orientée objet, commercialisé parMicrosoft depuis 2002[2] et destiné à développer sur la plateformeMicrosoft .NET, au même titre que d’autres langages liés à cette plateforme (ex. :VB .NET,J#etc.).

C# est dérivé duC++ et très proche duJava dont il reprend la syntaxe générale ainsi que les concepts, y ajoutant des notions telles que lasurcharge des opérateurs, lesindexeurs (en) et lesdélégués. Il est utilisé notamment pour développer desapplications web sur la plateformeASP.NET, ainsi que des jeux vidéo avec les moteurs de jeuxUnity etGodot[3].

Présentation

[modifier |modifier le code]

C# est unlangage de programmationorientée objet,fortement typé, dérivé deC et deC++, ressemblant au langageJava[2]. Il est utilisé pour développer desapplications web, ainsi que desapplications de bureau, desservices web, des commandes, deswidgets ou desbibliothèques declasses[2]. En C#, une application est un lot de classes où une des classes comporte une méthodeMain, comme cela se fait en Java[2].

C# est destiné à développer sur la plateforme.NET, unepile technologique créée par Microsoft pour succéder àCOM.

Lesexécutables en C# sont subdivisés enassemblies, ennamespaces, en classes et en membres de classe[4]. Un assembly est la formecompilée, qui peut être un programme (un exécutable) ou une bibliothèque de classes (unedll). Un assembly contient le code exécutable enCIL, ainsi que les symboles. Le codeCIL est traduit enlangage machine au moment de l'exécution par la fonctionjust-in-time de la plateforme .NET[4].

Plateforme .NET

[modifier |modifier le code]

C# est destiné à développer sur la plateforme .NET. Le cœur de cettepile technologique est leframework .NET, composé de[2] :

Un autre produit de la plateforme .NET est l'environnement de développementVisual Studio .NET, outil généralement utilisé pour programmer en C#[2].

Caractéristiques

[modifier |modifier le code]

C# est un langage dérivé duC++, il apporte untypage sûr, ainsi que les possibilités d'encapsulation, d'héritage et depolymorphisme des langages orientés objet[2]. En C# tous les types sont desobjets[2]. Le langage comporte unramasse-miettes et unsystème de gestion d'exceptions[2].

Le typage sûr signifie notamment que les opérations suivantes sont refusées : utilisation de variable noninitialisée, tentative d'accéder au-delà des limites d'un tableau,conversions de type dont les résultats ne sont pas prévisibles,dépassement des limites lors d'opérations arithmétiques[2].

Beaucoup de possibilités deJava se retrouvent dans C# et il y a une forte ressemblance entre un code écrit en C# et le code équivalent en Java[2].

En C# les variables peuvent être d'untypevaleur ou d'un typeréférence. Les types valeur sont les typesprimitifs, lesénumérations, lesstruct et les typesnullable[4]. Les types référence sont lesclasses, lesinterfaces, lestableaux et lesdelegate[4].

Types primitifs

Les types primitifs sont sbyte, short, int, long, byte, ushort, uint, ulong, char, float, double, decimal et bool[4].

class

Les constructions les plus fondamentales du langage C# sont lesclasses. Celles-ci peuvent contenir desconstantes, des champs, despropriétés, des indexeurs, desméthodes, des événements, desopérateurs, desconstructeurs, desdestructeurs ou des sous-classes[4]. Les classes élémentaires sontstring etobject[4].

struct

Les struct sont similaires aux classes, mais ce sont des types valeurs et ils ne peuvent pas êtrehérités[4].

delegate

Un delegate est une référence à une méthode qui comporte certainsparamètres. Les delegates permettent d'assigner des méthodes à des variables et les passer en paramètre[4].

enum

Un type énuméré est un type valeur qui comporte un lot de constantes. Chaque type énuméré a un type sous-jacent : un type primitif déterminé en fonction des valeurs des constantes.

type nullable

Les nullable sont des types primitifs qui peuvent en plus avoir la valeurnull[4]. Chaque type primitif T a un type nullable associé T?. Par exemple une variable de type int? peut contenir un int ou null[4].

Syntaxe

[modifier |modifier le code]

Exemple de code :

usingSystem;publicclassHelloWorld{publicstaticvoidMain(string[]args){Console.WriteLine("Salut tout le monde!");}}
Mots clé

Les mots clé de C# 1.0 sont :

abstractclasseventifnewreadonlyasconstexplicitimplicitnullrefbasecontinueexterninobjectreturnbooldecimalfalseintoperatorsbytebreakdefaultfinallyinterfaceoutsealedbytedelegatefixedinternaloverrideshortcasedofloatisparamssizeofcatchdoubleforlockprivatestackalloccharelseforeachlongprotectedstaticcheckedenumgotonamespacepublicstringstructthrowtypeofuncheckedusingvolatileswitchtrueuintunsafevirtualwhilethistryulongushortvoid

[5]

Les mots clés ajoutés entre C# 2.0 et 6.0 :

adddynamicjoinselectaliasequalsletsetascendingfromnameofvalueasyncgetonvarawaitglobalorderbywherebygrouppartialwhendescendingintoremoveyield

[5]

La syntaxe de C# permet de réaliser deschaînes de caractères numériques dont le format est modifiable[6], notamment avec TimeSpan pour la réalisation dechronomètre ouminuteur[7].

Différences avec le C++

[modifier |modifier le code]
Cette sectionne cite pas suffisamment ses sources (février 2017)
Pour l'améliorer, ajoutezdes références de qualité et vérifiables (comment faire ?) ou le modèle{{Référence nécessaire}} sur les passages nécessitant une source.

Le langage compte un certain nombre de changements par rapport auC/C++ ; on notera particulièrement les points suivants :

  • la manipulation directe depointeurs ne peut se faire qu’au sein d’un code marquéunsafe, et seuls les programmes avec les permissions appropriées peuvent exécuter des blocs de codeunsafe. La plupart des manipulations de pointeurs se font via des références sécurisées, dont l’adresse ne peut être directement modifiée, et la plupart des opérations de pointeurs et d’allocations sont contrôlées contre les dépassements de mémoire. Les pointeurs ne peuvent pointer que sur destypes de valeurs, les typesobjets, manipulés par leramasse-miettes, ne pouvant qu’être référencés ;
  • les objets ne peuvent pas être explicitement détruits. Leramasse-miettes s’occupe de libérer la mémoire lorsqu’il n’existe plus aucune référence pointant sur un objet. Toutefois, pour les objets gérant des types non managés, il est possible d’implémenter l’interfaceIDisposable pour spécifier des traitements à effectuer au moment de la libération de la ressource ;
  • l’héritage multiple de classes est interdit, mais une classe peut implémenter un nombre illimité d’interfaces, et une interface peut hériter de plusieurs interfaces ;
  • le C# est beaucoup plustypé que le C++ ; les seules conversions implicites sont celles entre les différentes gammes d’entiers et celles d’un type dérivé à un type parent. Aucune conversion implicite n’a lieu entre booléens et entiers, entre membres d’énumération et entiers, ni de pointeurs sur un typevoid (quoique pour ce dernier point l’utilisation de références sur le type Object permette d’obtenir le même effet). Les conversions définies par l’utilisateur peuvent être définies comme implicites ou explicites ;
  • la syntaxe pour la déclaration destableaux n’est pas la même :int[] a = new int[5] remplaceint a[5]. Car il s'agit d'uneallocation dynamique,int[] a étant la déclaration d'une référence (nulle si non initialisée). L'allocation manuelle d'un tableau sur la pile reste cependant possible avec le mot cléstackalloc[8] ;
  • les membres d’une énumération sont rassemblés dans leur propreespace de noms ;
  • le C# ne gère pas lestemplates, mais cette fonctionnalité a été remplacée par lestypes génériques apparus avec C# 2.0 ;
  • les propriétés ont été introduites, et proposent une syntaxe spécifique pour l’accès aux données membres (ainsi que la facilitation de l’accès simultané par plusieursthreads) ;
  • laréflexion totale des types est disponible ;
  • les délégués, qui sont des listes de pointeurs sur fonctions, sont utilisés notamment pour laprogrammation événementielle.

Différences avec le Java

[modifier |modifier le code]
Cette sectionne cite pas suffisamment ses sources (février 2017)
Pour l'améliorer, ajoutezdes références de qualité et vérifiables (comment faire ?) ou le modèle{{Référence nécessaire}} sur les passages nécessitant une source.

Bien que le C# soit similaire à Java, il existe des différences notables, par exemple :

  • Java n'autorise pas lasurcharge des opérateurs ;
  • Java a des exceptions vérifiées, alors que les exceptions du C# ne sont pas vérifiées, comme en C++ ;
  • Java permet la génération automatique de la documentationHTML à partir des fichiers sources à l'aide des descriptionsJavadoc-syntax, tandis que le C# utilise des descriptions fondées sur leXML ;
  • Java n'a pas de langagepréprocesseur ;
  • C# prend en charge les indexeurs, les méthodes déléguées, et les événements (là où Java se contente dupatron de conceptionobservateur) ;
  • C# ne prend pas en charge les implémentations anonymes d'interfaces et de classes abstraites ;
  • C# ne prend en charge que les classes internes statiques ;
  • C# prend en charge les structures en plus des classes (les structures sont des typesvaleur : on stocke le contenu et non l'adresse) ;
  • C# utilise une syntaxe intégrée au langage (DllImport[9]) et portable pour appeler une bibliothèque native, tandis que Java utiliseJava Native Interface ;
  • C# intègre lagénéricité et la machine.NET a été modifiée pour permettre cela (Java l'intègre également, mais son implémentation a été réalisée dans le compilateurjavac sans changer lebytecode Java)[10].

Histoire

[modifier |modifier le code]

C'est en septembre 2002 que laplateforme .NET et C# sont présentés au public[2]. C# devient le langagede facto de cette plateforme, il a par ailleurs été utilisé pour implémenter une partie de la plateforme .NET[2].

Versions

[modifier |modifier le code]
AnnéeVersionBibliothèquePrincipal changement
20021.0.NET framework 1.0 et 1.1
20052.0.NET framework 2.0généricité ajoutée à C# et auframework
20083.0.NET framework 3.5LINQ (LanguageINtegratedQueries)
20104.0.NET framework 4.0types dynamiques
20125.0.NET framework 4.5méthodes asynchrones
20156.0.NET framework 4.6version pourLinux
20177.0 - 7.3.NET framework >= 4.5 et .NET Core 2.XTuples, fonctions locales
20198.0.NET standard >=2.1 et .NET Core >=3.0Membre ReadOnly, opérateur d’assignation de fusion
20209.0.NET 5.0Vérification de nullité, instructions de niveau racine
202110.0.NET 6.0Directives d’utilisation globale, modèles de propriété étendus
202211.0.NET 7.0Attributs générique, membre requis, chaîne brute
202312.0.NET 8.0Simplification de code
202413.0.NET 9.0Amélioration params, lock
202514.0.NET 10.0Mot clé field, affectation conditionnelle en cas de null

[5]

C# 2.0

[modifier |modifier le code]
Cette sectionne cite pas suffisamment ses sources (février 2017)
Pour l'améliorer, ajoutezdes références de qualité et vérifiables (comment faire ?) ou le modèle{{Référence nécessaire}} sur les passages nécessitant une source.

Microsoft mit à disposition du public en, après une longue période de beta-tests, la version 2.0 de la bibliothèque .NET, accompagnée d’une nouvelle version de la quasi-totalité des outils associés. C# ne fait pas exception à la règle et sort donc en version 2.0, avec les ajouts suivants :

  • les classes partielles, permettant de répartir l’implémentation d’une classe sur plusieurs fichiers ;
  • lestypes génériques, qui ne sont pas une simple copie destemplates C++. Par exemple, on trouvera dans les génériques C# la restriction de types (pour spécifier les types utilisables dans une généralisation). Par contre, il est impossible d’utiliser des expressions comme paramètres pour la généralisation ;
  • un nouvel itérateur qui permet l’utilisation decoroutines via le mot-cléyield, équivalent duyield que l’on trouve enPython ;
  • les méthodes anonymes avec des règles defermeture configurables ;
  • les types « nullables », c'est-à-dire la possibilité de spécifier qu’un type de valeur peut être nul. Ceux-ci sont déclarés avec le caractère point d'interrogation « ? » suivant le nom du type, comme ceci :int? i = null;
  • le nouvel opérateur double point d'interrogation « ?? » utilise deux opérandes et retourne le premier non nul. Il a été introduit pour spécifier une valeur par défaut pour les types « nullables ».

À titre de référence, les spécifications complètes des nouveautés introduites dans la version 2.0 sont disponibles dans lesliens externes.

La fonctionnalité des types nullables fut corrigée quelques semaines seulement avant la sortie publique de la version 2.0, car il a été mis en lumière que si la valeur de la variable était bien nulle, cette variable n’était pas nulle au sens traditionnel du terme, c'est-à-dire qu’il ne s’agit pas d’une référence vide. Ainsi, la conversion d’un type primitif de valeur nulle en objet donnait une référence non nulle vers une valeur nulle. Il fallut donc, pour corriger ce problème, corriger le noyau duCLR et effectuer de nombreuses vérifications et corrections sur tous les produits de la gamme .NET 2.0 (Visual Studio 2005,SQL Server 2005, C# et VB.NET).

C# 3.0

[modifier |modifier le code]
Cette sectionne cite pas suffisamment ses sources (février 2017)
Pour l'améliorer, ajoutezdes références de qualité et vérifiables (comment faire ?) ou le modèle{{Référence nécessaire}} sur les passages nécessitant une source.

Le C# 3.0 fut présenté au salonProcessing Community Day[11] 2005. La version finale est disponible depuis le au téléchargement sur le site de Microsoft][12]. Les principales nouveautés sont les suivantes :

  • L’ajout des mots-clefsselect,from etwhere pour permettre la formation et l’exécution de requêtes SQL, XML, ou directement sur descollections. Cette fonctionnalité fait partie du programme Language Integrated Query (LINQ)][13].
  • Nouvelle possibilité d’initialisation d'un objet : À la place deClient c = new Client(); c.Nom = "Dupont";, on peut utiliserClient c = new Client{ Nom = "Dupont" };
  • Expressions lambda :ListeTrucs.Where( delegate(Truc x) { return x.Size > 10; } ); devientListeTrucs.Where( x => x.Size > 10 );
  • Inférence du type des variables locales :string s = "Dupont" peut être remplacé parvar s = "Dupont"
  • Introduction des types anonymes :var x = new { Nom = "Dupont" } peut être utilisé à la place declass __anonymous { private string _nom; public string Nom { get { return _nom; } set { _nom = value; } } } __anonymous x = new __anonymous(); x.Nom = "Dupont";
  • Les arbres d'expressions (expression trees[14]) : permettent la compilation du code sous forme d'arbres d'objets facilement analysables et manipulables.
  • Méthodes étendues : permet d'ajouter des méthodes à une classe en y ajoutant un premier paramètrethis.

Une présentation du C# 3.0 et de LINQ peut être trouvée sur la page ducentre de développement de .NET Framework.

Le code compilé en C# 3.0 est entièrement compatible avec celui du 2.0, étant donné que les améliorations apportées ne sont que purement syntaxiques ou ne consistent qu’en des raccourcis compensés au moment de la compilation. Les nouveautés introduites dans les bibliothèques de la version 3.5 (LINQ, etc.) ne sont cependant pas utilisables avec les versions précédentes de C#.

Cette version exigeWindows XP ou une version supérieure (Vista ouWindows 7). Elle n'est pas disponible pourWindows 2000.

C# 4.0

[modifier |modifier le code]

Laversion 4 du langage apporte plusieurs nouveautés :

Leframework.NET 4.0 est sorti le, accompagné deVisual Studio 2010[16].Il propose entre autres :

  • la nouvelle bibliothèque parallèle :Task Parallel Library[17] ;
  • une version optimisée de la plate-forme entité d'accès aux bases de données (Entity Framework) via l'utilisation de LINQ ;
  • la version parallèle de LINQ appelée PLINQ[18].

C# 5.0

[modifier |modifier le code]

Laversion 5 du langage permet de programmer plus simplement des programmes asynchrones grâce à l'ajout des mots clésasync etawait.

Le comportement desclosures dans la boucleforeach (en) a été modifié. Il n'est désormais plus nécessaire d'introduire une variable locale dans une boucleforeach pour éviter les problèmes declosure[19].

À noter également les informations relatives à l'appelant[20] permettant de connaître le nom de la méthode qui a appelé une propriété.

C# 6.0

[modifier |modifier le code]

La sixième version du C# apporte plusieurs modifications, notamment :

Les propriétés implémentées automatiquement (ou propriétés automatiques) sont apparues en C# 3, pour simplifier la déclaration de propriétés qui se contentent d'encapsuler l'accès à des champs. Bien qu'elles permettent de rendre le code plus concis, elles présentent un inconvénient : il n'est pas possible de les initialiser au niveau de la déclaration, il faut forcément le faire dans le constructeur. De plus, il n'est pas possible de faire des propriétés automatiques en lecture seule, puisqu'elles n'ont pas de mutateur (setter) et on ne pourrait donc pas leur affecter de valeur.

C# 6 remédie à ce problème en permettant d'initialiser les propriétés automatiques au niveau de la déclaration[21].

C# 7.0

[modifier |modifier le code]

La version 7 du langage apporte de nombreuses nouveautés dont les principales sont[22]:

  • Les fonctions locales: la possibilité de déclarer une méthode à l'intérieur dans une autre méthode
  • Tuples et déconstruction: cela permet par exemple pour une fonction, de renvoyer plusieurs valeurs
  • Variables out: une variable peut être déclaré au moment de l'appel. Par exemple:
    int.TryParse(s,outinti);
  • Pattern matching (oufiltrage par motif en français) permet de déterminer si une valeur correspond à un motif donné. Exemple avec un switch[23] :
    switch(shape){caseRectangler:Console.WriteLine($"Rectangle with area {r.Width * r.Height}");break;caseCirclecwhenc.Radius<5:Console.WriteLine($"Small circle");break;caseCirclec:Console.WriteLine($"Large circle");break;}
  • Membres expression-bodied étendus
  • Amélioration des littéraux numériques
  • Retours par référence

C# 8.0

[modifier |modifier le code]

La version 8 de C# est la première qui cible spécifiquement .NET Core.

Quelques nouveautés :

  • les fonctions locales statiques[24]
  • l'utilisation deusing sans bloc de code[24]:
publicvoidUseDisposableObject(){usingvardisposableObject=newDisposableObject();// Utilisation de disposableObject// ...// disposableObject.Dispose() est exécuté juste avant la sortie de la méthode}
  • méthode d’interface par défaut
  • membre de structurereadonly[25]
  • opérateur ??= : affecte une valeur uniquement si la variable est nulle[26]
  • index et plage d’une liste

C# 9.0

[modifier |modifier le code]

La version 9 de C# comprend entre autres les nouveautés suivantes[27]:

  • les records
  • l'accesseurinit
  • new(): omission possible du type
  • les fonctions anonymes statiques
  • la simplification du code de la fonction Main()
  • le support de la méthode d’extension GetEnumerator() pour les boucles foreach

C# 10.0

[modifier |modifier le code]

La version 10 de C# comprend entre autres les nouveautés suivantes[28]:

  • simplification de la déclaration des namespaces, à la portée du fichier
  • amélioration dupattern matching
  • amélioration des expressions lambda
  • amélioration des records (introduits avec C# 9)
  • namespaces implicites (déclaré au niveau du projet plutôt que dans chaque fichier)

C# 11.0

[modifier |modifier le code]

Les principales nouveautés de la version 11 sont[29]:

  • les propriétésrequired qui doivent être obligatoirement initialisées
  • les littéraux de chaîne bruts. Ces chaînes commencent et se terminent par trois guillemets (""")
  • les listes patterns
  • le mot cléfile pour la déclaration de type

C# 12.0

[modifier |modifier le code]

La version 12 de C# comprend les nouveautés suivantes[30]:

  • simplification de code pour la création des collections, comme :List<int> items1 = [1, 2, 3, 4];
  • les constructeurs primaires sur les classes ou les structures. Exemple:public class Rectangle(int length, int width);
  • l'opérateurspread, pour créer une collection à partir d'un énumérable. Exemple :List<int> collection1 = [..array1];
  • ref only en argument de méthode

C# 13.0

[modifier |modifier le code]

La version 13 de C#, introduite avec .Net 9, comprend les nouveautés suivantes[31] :

  • collections avecparams : le mot clé fonctionne avec C# 13 pour tout type de collection ;
  • nouvel objet pour la synchronisation de thread :System.Threading.Lock ;
  • index à partir de la fin dans les initialisations de collection. Par exemple :Value[^1] = 999; ;
  • propriétés partielles et indexeurs partiels.

C# 14.0

[modifier |modifier le code]

La version 14 de C# apporte les principales nouveautés[32]:

  • le mot cléfield pour faciliter l'écriture des propriétés
  • l'amélioration sur la déclaration des lambda (paramètres avec modificateurs commeout)
  • l'affectation conditionnelle en cas de null. Il est possible d'utiliser?. pour affecter une propriété sans avoir à tester sa nullité, comme dans l'exemple suivant:
publicvoidUpdateLastActivity(Useruser){user?.LastActive=DateTime.UtcNow;}

Jusqu'à présent, l'opérateur?. ne pouvait être utilisé que pour les vérifications et non pour les affectations[32]:

if(user?.LoggedIn==true)// OK{user?.LoggedIn=false;// Error}

Standardisation

[modifier |modifier le code]

Le C# a été normalisé par l'ECMA (ECMA-334) en et par l'ISO/CEI (ISO/CEI 23270) en2003.

Les modifications survenues dans laVersion 2.0 ont été normalisées par l'ECMA (ECMA-334) en et par l'ISO/CEI (ISO/CEI 23270:2006) en.

Microsoft a ouvert lecode source de certaines bibliothèques utilisées par le C# en sous la licenceMicrosoft Reference Source License (MS-RSL)[33].

Nom du langage

[modifier |modifier le code]

Le standard ECMA 334 et l'ISO 23270 définissent le nom du langage comme le caractèreUnicode 0043 (C majuscule) suivi du caractère 0023 (#)[34]. Il est prononcé « C sharp » et non « C hash », « sharp » désignant en effet le symbole musical mais # étant nécessaire pour un accès facile depuis un clavier d'ordinateur qui propose lecroisillon (« hash ») à la place.

Le nom "C#" est inspiré de la notation musicale où un dièse indique que la note écrite doit être augmentée d'un demi-ton. Ceci est similaire au nom de langage de C++, où "++" indique qu'une variable doit être incrémentée de 1 après avoir été évaluée. Le symbole # ressemble également à une ligature de quatre symboles "+" (dans une grille deux par deux), ce qui implique que le langage est un incrément de C++[réf. souhaitée].

Voir aussi

[modifier |modifier le code]

Bibliographie

[modifier |modifier le code]

Articles connexes

[modifier |modifier le code]

Sur les autres projets Wikimedia :

Liens externes

[modifier |modifier le code]

Notes et références

[modifier |modifier le code]
  1. a etb« What's new in .NET 10 »(consulté le)
  2. abcdefghijklmno etp(en) Balagurusamy,Programming In C#, Tata McGraw-Hill Education - 2008,(ISBN 9780070667570).
  3. (en) Paul HillNeowin ·, « Godot Engine arrives on Epic Games Store making it easier to download », surNeowin,(consulté le).
  4. abcdefghij etk(en) Anders Hejlsberg - Mads Torgersen - Scott Wiltamuth - Peter Golde,The C# Programming Language (Covering C# 4.0), Portable Documents, Addison-Wesley Professional - 2010,(ISBN 9780132481724).
  5. ab etc(en) Mark Michaelis - Eric Lippert,Essential C# 6.0, Addison-Wesley Professional - 2015,(ISBN 9780134176130).
  6. (en) « Custom numeric format strings », surmicrosoft.com(consulté le).
  7. (en) « Custom TimeSpan format strings », surmicrosoft.com(consulté le).
  8. Site MSDN
  9. (en) Microsoft Learn, « DllImportAttribute Class (System.Runtime.InteropServices) », surMicrosoft Learn,(consulté le).
  10. (en)Support du cours de sous-typage du MPRI[PDF],diapositives 73-80 et 70-89.
  11. (en) Processing Foundation, « Processing Foundation — Processing Community Day @ Worldwide », surProcessing Foundation(consulté le).
  12. (en)https://msdn2.microsoft.com/en-us/vstudio/default.aspx
  13. (en)https://msdn2.microsoft.com/fr-fr/netframework/aa904594.aspx
  14. (en) Microsoft Learn, « Expression Trees - C#, Microsoft Learn », surMicrosoft Learn,(consulté le).
  15. https://msdn.microsoft.com/fr-fr/library/vstudio/dd264739(v=vs.100).aspx
  16. (en)Site MSDN.
  17. (en) Microsoft Learn, « Task Parallel Library (TPL) - .NET, Microsoft Learn », surMicrosoft Learn,(consulté le).
  18. (en) Microsoft Learn, « Introduction to PLINQ - .NET, Microsoft Learn », surMicrosoft Learn,(consulté le).
  19. http://blogs.msdn.com/b/ericlippert/archive/2009/11/12/closing-over-the-loop-variable-considered-harmful.aspx
  20. https://msdn.microsoft.com/fr-fr/library/hh534540.aspx
  21. ThomasLevesque, « Les nouveautés de C# 6 »(consulté le).
  22. ThomasLevesque, « Les nouveautés de C# 7 »,Developpez.com,‎(lire en ligne, consulté le)
  23. MathiasMontantin, « Pattern matching (C# 7, C# 8.0) », surBlog .NET,(consulté le)
  24. a etbMathiasMontantin, « Fonctionnalités C# 8.0 », surBlog .NET,(consulté le)
  25. MathiasMontantin, « Membre d'une structure en lecture seule avec readonly (C# 8.0) », surBlog .NET,(consulté le)
  26. MathiasMontantin, « Références nullables (C# 8.0) », surBlog .NET,(consulté le)
  27. MathiasMontantin, « Les fonctionnalités C# 9.0 », surBlog .NET,(consulté le)
  28. MathiasMontantin, « Les fonctionnalités C# 10.0 », surBlog .NET,(consulté le)
  29. « Les nouveautés de C# 11 - Invivoo », surinvivoo.com(consulté le)
  30. MathiasMontantin, « Les fonctionnalités C# 12 », surBlog .NET,(consulté le).
  31. AbdelkrimBourennane, « Les nouveautés .NET 9 et C# 13 avec des exemples », surLe blog de Cellenza,(consulté le).
  32. a etb(en) DmitriiKharitonov, « What′s new in C# 14: overview », surPVS-Studio,(consulté le)
  33. Microsoft Reference Source License (MS-RSL)
  34. ECMA 334,p. 11
v ·m
FondateursLogo de Microsoft
Personnes clés
Produits
Systèmes d'exploitation
Matériel
Logiciels
Applications Web
Outils
Technologie
Anciens produits
Entreprise
Conférences
Divisions
Litiges etcritiques
Articles liés
v ·m
NormesISO
Logo de l’Organisation internationale de normalisation
v ·m
Concurrents
Déclaratifs
Fonctionnels
Impératifs
Orientés objet
Ce document provient de « https://fr.wikipedia.org/w/index.php?title=C_Sharp&oldid=232316029 ».
Catégories :
Catégories cachées :

[8]ページ先頭

©2009-2026 Movatter.jp