C# 10

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.

Auteur : danielMF

Laisser un commentaire




Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.