C# : Introduction
L'histoire du C#, ses origines chez Microsoft, son évolution de 2002 à aujourd'hui, et pourquoi il reste un langage incontournable.
C# : Introduction
Avant de plonger dans la syntaxe ou les objets, posons le cadre. D'où vient C# ? Pourquoi a-t-il été créé ? Et pourquoi est-il encore aussi pertinent aujourd'hui ?
# L'origine
C# est né chez Microsoft au début des années 2000. Le projet est mené par Anders Hejlsberg, un ingénieur danois déjà connu pour avoir créé Turbo Pascal puis Delphi chez Borland.
À l'époque, Microsoft a un problème : Java domine le monde de l'entreprise, et la plateforme Windows n'a pas de langage moderne capable de rivaliser. Visual Basic est trop limité, C++ est trop complexe pour du développement d'applications métier.
Microsoft tente d'abord de créer son propre Java (Visual J++), mais Sun Microsystems les attaque en justice pour non-respect de la licence. Microsoft perd.
La réponse ? Créer un tout nouveau langage qui prend le meilleur de Java et de C++, sans les contraintes de licence. Ce langage, c'est C#.
# La chronologie
| Année | Version | Ce qui change |
|---|---|---|
| 2002 | C# 1.0 | Lancement avec .NET Framework 1.0 - classes, héritage, interfaces |
| 2005 | C# 2.0 | Generics (List<T>), nullable types, itérateurs |
| 2007 | C# 3.0 | LINQ, expressions lambda, types anonymes |
| 2010 | C# 4.0 | dynamic, paramètres nommés et optionnels |
| 2012 | C# 5.0 | async/await - la programmation asynchrone simplifiée |
| 2015 | C# 6.0 | Interpolation de strings $"", null-conditional ?. |
| 2017 | C# 7.x | Tuples, pattern matching basique, out var |
| 2019 | C# 8.0 | Nullable reference types, switch expressions, interfaces avec implémentation |
| 2020 | C# 9.0 | Records, init-only properties, top-level statements |
| 2021 | C# 10 | global using, file-scoped namespaces, record structs |
| 2022 | C# 11 | Raw string literals """...""", required members |
| 2023 | C# 12 | Primary constructors, collection expressions |
Le langage évolue chaque année avec une nouvelle version majeure. Ce n'est pas un langage figé - il intègre constamment des concepts modernes.
# À quoi ça sert ?
C# est polyvalent. Contrairement à ce qu'on pourrait croire, il ne se limite pas aux applications Windows :
- Applications desktop - WPF, WinForms, MAUI
- Web - ASP.NET Core (API, MVC, Blazor)
- Mobile - .NET MAUI (ex-Xamarin), iOS + Android
- Jeux vidéo - Unity (le moteur le plus utilisé au monde)
- Cloud - Azure Functions, microservices
- IoT - .NET nanoFramework sur microcontrôleurs
Quand on dit "apprendre C#", on ouvre la porte à tous ces domaines avec un seul langage.
# C# et .NET - la frontière
C'est la confusion la plus courante quand on débute :
C# est le langage. .NET est la plateforme qui le fait tourner.
Quand tu écris Console.WriteLine("Hello"), le mot-clé Console ne fait pas partie de C#. C'est une classe fournie par .NET (la bibliothèque standard). C# ne fournit que la syntaxe : les if, les class, les async.
On détaillera cette frontière dans un article dédié. Pour l'instant, retiens juste : C# sans .NET, ça compile mais ça ne fait rien d'utile.
# La suite
Maintenant que tu sais d'où vient C# et ce qu'il permet, on peut rentrer dans le vif du sujet. Les prochains articles de cette série couvrent :
- Les types - types primitifs, collections, strings, conversions
- La syntaxe - variables, opérateurs, structures de contrôle, méthodes
- Les objets - classes, constructeurs, propriétés, héritage
- La mémoire - stack vs heap, value types vs reference types
- Le Garbage Collector - générations, IDisposable,
using - C# vs .NET - ce qui est du langage et ce qui est du framework
Pour aller plus loin
C# : Les types
Types primitifs, tableaux, collections, strings et conversions - le vocabulaire de base du langage C#.
C# : La syntaxe
Variables, opérateurs, structures de contrôle et méthodes - comment manipuler les données en C#.
C# vs .NET
Ce qui est du langage et ce qui est du framework - comprendre la frontière entre C# et .NET.
C# : Conventions de nommage
PascalCase, camelCase, underscore - comment nommer ses variables, classes, méthodes et fichiers en C#.