Le langage C# a eu 20 ans cette année. Quel chemin parcouru depuis ses débuts! Il est bien loin le temps des classes génériques de la version 2 ou de l’interpolation de chaînes de la version 6. Je vous propose de voir quelques nouveautés de C# 10.
Vérification d’un objet null
L’une des exceptions les plus récurrentes pour les devs est NullReferenceException. On a déjà tous tenté d’utiliser une propriété ou une méthode d’un object null. En général pour l’éviter, il faut vérifier que l’objet n’est pas null avec un code du genre:
if(myObject != null)myObject.Process();
Avec C# 10, il suffit d’ajouter deux points d’exclamation après l’objet et le code vérifiera automatiquement si notre objet est null et lèvera une exception ArgumentNullException si c’est le cas.
public MyFunction(MyClass myObject!!)
{
}
Global using
Au début d’un fichier C#, on retrouve souvent les directives using utilisées dans le fichier:
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
Si la directive est utilisée dans plusieurs fichiers, on doit la répéter dans tous les fichiers du projet qui en ont besoin. Avec C# 10, plus besoin de le faire. Un using global permet de définir les directives dont on a besoin pour tout le projet.
global using System.Collections.Generic;
global using System.Linq;
global using System.Threading.Tasks;
Nouvelle déclaration du namespace
Ce changement est plus cosmétique qu’autre chose. Désormais vous pouvez remplacer l’écriture suivante:
namespace Mynamespace
{
public class MyClass
{
}
}
Par
namespace Mynamespace;
public class MyClass
{
}
Record de type valeur
Le mot clé Record a été introduit dans C# 9. Il permet de déclarer des types références pour encapsuler des données. La nouveauté de C# 10 est qu’il désormais possible créer des records de type valeur.
Interpolation de chaîne constante
Avant C# 10, pour créer une chaîne constante en utilisant d’autres variables, on pouvait utiliser une écriture du type:
const string name = "toto";
const int age = 22;
const string message = "my name is " + name + " and I am " + age + " years old";
Désormais, l’écriture suivante, utilisant l’interpolation de chaine est possible:
const string name = "toto";
const int age = 22;
const string message = $"my name is {name} and I am {age} years old";
Cet article dévoilait quelques nouveautés de C#10. A peine parle t-on de la version 10, que la version 11 pointe déjà le bout de son nez. Il est déjà possible de la tester avec Visual Studio 2022.
Laisser un commentaire