C# en 2025 : quoi de neuf en pratique ?
Le monde .NET ne reste pas immobile. En 2025, le langage C# continue d'évoluer activement, offrant aux développeurs des outils pour écrire un code plus concis, plus sûr et plus performant. Chaque mise à jour de la plateforme rend le développement quotidien plus pratique, et les nouvelles constructions linguistiques permettent de se débarrasser du code passe-partout.
Dans cet article, nous allons analyser trois innovations clés de C# en 2025 que vous pouvez commencer à utiliser dès maintenant. Tous les exemples de code sont tirés de la pratique réelle et adaptés pour le portail éducatif pythonlib.ru.
1. Constructeurs primaires (Primary Constructors)
L'une des innovations les plus attendues est l'introduction des constructeurs primaires pour les classes et les structures. Auparavant, cette possibilité n'était disponible que pour les enregistrements (record). Désormais, vous pouvez déclarer les paramètres du constructeur directement dans l'en-tête de la classe, ce qui réduit considérablement le volume de code.
Examinons un exemple classique de création d'un modèle d'utilisateur :
Avant (C# 12 et versions antérieures) :
public class User{ public string Name { get; } public int Age { get; }
public User(string name, int age) { Name = name; Age = age; }}Après (C# 2025) :
public class User(string name, int age){ public string Name { get; } = name; public int Age { get; } = age; public string Greeting => $"Bonjour, {Name} ! Tu as {Age} ans.";}Comme vous pouvez le voir, le code est devenu plus propre. Les paramètres name et age sont désormais accessibles dans tout le corps de la classe. C'est particulièrement pratique lors de l'utilisation de l'injection de dépendances (Dependency Injection - DI) dans ASP.NET Core :
public class WeatherService(HttpClient httpClient, ILogger<WeatherService> logger){ public async Task<string> GetWeatherAsync(string city) { logger.LogInformation("Requête météo pour la ville {City}", city); var response = await httpClient.GetStringAsync($"https://api.weather.com/{city}"); return response; }}Les constructeurs primaires permettent de se passer de nombreux champs et affectations explicites, rendant le code plus déclaratif.
2. Collections de nouvelle génération (Collection Expressions)
En 2025, C# a reçu une mise à jour puissante pour le travail avec les collections. Vous pouvez désormais initialiser des listes, des tableaux et même des Span<T> avec une syntaxe unifiée : les collection expressions.
La nouvelle syntaxe utilise des crochets [] au lieu d'accolades {} ou de new List<T>() :
Exemple d'initialisation de diverses collections :
// Tableauint[] numbers = [1, 2, 3, 4, 5];
// ListeList<string> names = ["Anne", "Boris", "Victor"];
// Span (fonctionne sans allocations)Span<char> letters = ['A', 'B', 'C'];La fonctionnalité phare est l'opérateur de dépaquetage (spread) ... Il permet de fusionner des collections sans appeler .Concat() ou .AddRange() :
int[] first = [1, 2, 3];int[] second = [4, 5, 6];
// Fusion de tableauxint[] combined = [..first, ..second]; // [1, 2, 3, 4, 5, 6]
// Ajout d'éléments au début et à la finint[] extended = [0, ..combined, 7]; // [0, 1, 2, 3, 4, 5, 6, 7]Cette syntaxe fonctionne non seulement avec les tableaux, mais aussi avec List<T>, HashSet<T> et même avec des collections personnalisées implémentant ICollection<T>. Pour les développeurs habitués à Python, cette approche semblera très familière et intuitive.
3. Interpolation de chaînes améliorée et gestion des exceptions
L'interpolation de chaînes dans C# 2025 a reçu plusieurs améliorations importantes qui la rendent encore plus flexible.
3.1. Interpolation dans les opérateurs nameof
Vous pouvez main