Initialisation des systèmes...

Baptiste.Dev
Retour aux notes
LangagesDébutantSérie : C# / .NET

C# vs .NET

Ce qui est du langage et ce qui est du framework - comprendre la frontière entre C# et .NET.

4 min de lecture
Mis à jour il y a 4 mois
c#csharp.netdotnetframeworkCLRBCL

C# vs .NET

Dans l'introduction, on a posé la règle : C# est le langage, .NET est la plateforme. Mais concrètement, où est la frontière ? Quand tu écris Console.WriteLine("Hello"), qu'est-ce qui vient de C# et qu'est-ce qui vient de .NET ?


# Ce qui est C# (le langage)

C# définit la syntaxe et les règles du langage. C'est tout ce que le compilateur comprend nativement :

  • Les mots-clés : if, else, for, class, struct, record, async, await...
  • Les opérateurs : +, ==, ??, ?., is, as...
  • Le système de types : int, bool, string, object, void
  • Les structures : classes, interfaces, enums, structs, records
  • Les modificateurs : public, private, abstract, sealed, static
  • Les fonctionnalités : generics, pattern matching, LINQ syntax, lambdas

C# ne fournit aucune fonctionnalité concrète. Pas de lecture de fichiers, pas de réseau, pas d'affichage console, pas de collections. Juste les règles pour écrire du code.


# Ce qui est .NET (la plateforme)

.NET fournit tout le reste - l'environnement d'exécution et les bibliothèques qui rendent C# utile :

Le CLR (Common Language Runtime)

Le moteur d'exécution. Le compilateur C# (Roslyn) transforme d'abord le code en code intermédiaire (IL). Ensuite, c'est le CLR qui :

  • Compile le code IL en code machine natif au moment de l'exécution (JIT - Just-In-Time)
  • Gère la mémoire et le garbage collector
  • Gère les exceptions
  • Vérifie la sécurité du code à l'exécution

La BCL (Base Class Library)

La bibliothèque standard. C'est elle qui fournit :

BesoinNamespace .NETExemple
ConsoleSystemConsole.WriteLine()
CollectionsSystem.Collections.GenericList<T>, Dictionary<K,V>
FichiersSystem.IOFile.ReadAllText()
RéseauSystem.Net.HttpHttpClient
JSONSystem.Text.JsonJsonSerializer
DatesSystemDateTime, TimeSpan
MathsSystemMath.Sqrt(), Math.PI
AsyncSystem.Threading.TasksTask, Task<T>
RegexSystem.Text.RegularExpressionsRegex.Match()

Quand tu écris Console.WriteLine("Hello") :

  • Console est une classe .NET (namespace System)
  • .WriteLine() est une méthode .NET
  • Les parenthèses, le ; et la string "Hello" sont de la syntaxe C#

Les frameworks applicatifs

Au-dessus de la BCL, .NET propose des frameworks pour chaque type d'application :

  • ASP.NET Core - Web (API, MVC, Blazor)
  • MAUI - Mobile et desktop cross-platform
  • WPF / WinForms - Desktop Windows
  • Entity Framework - ORM (accès base de données)

# L'analogie

Pense à C# comme la grammaire française et à .NET comme un dictionnaire + une encyclopédie :

  • La grammaire te dit comment construire des phrases (syntaxe)
  • Le dictionnaire te donne les mots (BCL)
  • L'encyclopédie te donne les connaissances spécialisées (frameworks)

Tu peux connaître parfaitement la grammaire, mais sans dictionnaire, tu ne peux pas écrire grand-chose.


# Les versions de .NET

L'écosystème .NET a évolué et changé de nom plusieurs fois, ce qui crée de la confusion :

NomPériodePlateforme
.NET Framework2002 – 2019Windows uniquement
.NET Core2016 – 2020Cross-platform (Windows, Linux, macOS)
.NET 5+2020 – aujourd'huiFusion des deux, cross-platform

Aujourd'hui, on dit simplement .NET (sans "Core" ni "Framework"). La dernière version LTS est .NET 10 (novembre 2025).

Si tu vois du code qui cible .NET Framework 4.x, c'est du legacy. Les nouveaux projets doivent utiliser .NET 6, 7 ou 8.


# En pratique

Quand tu crées un projet C#, tu choisis une version de .NET qui détermine :

  • Quelles fonctionnalités C# sont disponibles (chaque version de .NET supporte jusqu'à une certaine version de C#)
  • Quelles bibliothèques sont incluses
  • Sur quelles plateformes tu peux déployer
# Créer un projet console avec .NET 8
dotnet new console -n MonProjet
 
# Le fichier .csproj spécifie la version
# <TargetFramework>net8.0</TargetFramework>
.NETC# maxSortie
.NET 6 (LTS)C# 10Nov 2021
.NET 7C# 11Nov 2022
.NET 8 (LTS)C# 12Nov 2023
.NET 9C# 13Nov 2024
.NET 10 (LTS)C# 14Nov 2025

# Ce qu'il faut retenir

  • C# = la syntaxe (if, class, async). Change tous les ans avec une nouvelle version.
  • .NET = la plateforme (BCL, CLR, frameworks). Change aussi tous les ans.
  • Console, List<T>, File, HttpClient = c'est .NET, pas C#
  • var, ??, record, switch expression = c'est C#, pas .NET
  • Quand quelqu'un dit "je fais du .NET", il veut dire "j'écris du C# sur la plateforme .NET"
  • Les deux évoluent ensemble mais sont techniquement indépendants - tu pourrais écrire du F# ou du VB.NET sur .NET aussi

# La suite

Tu as maintenant une vision complète du langage C# et de son écosystème. Cette série a couvert :