Langage C# 8 – Les types références nullables

Présentation
Dans la version 8 du langage C#, Microsoft propose les types références nullables. Pourtant, jusqu’à la version 7 de ce langage, les types référence étaient déjà qualifiés de « nullable ». En quoi consiste donc cette nouveauté ?

L’objectif de cette nouveauté
Pour rendre les applications plus robustes, il est important de pouvoir anticiper la levée des exceptions survenant lors de leur exécution. L’une de ces exceptions est NullReferenceException qui survient lorsqu’un membre est appelé sur un objet qui n’a pas été préalablement créé. L’objectif de cette nouveauté est de prévenir la levée de cette exception lors de la compilation, en signalant qu’elle pourrait survenir.

Mise en œuvre
A partir de la version 8 du langage C#, l’instruction

string s = null;

provoque la levée d’un avertissement lors de la compilation : « Converting null literal or possible null value to non-nullable type », autrement dit une variable de type non nullable est susceptible d’être valorisée avec la valeur null. Pourquoi ce message ? Pour indiquer que la variable s peut contenir la valeur null, cette variable doit être déclarée de la manière suivante :

string? s = null;

L’utilisation du « ? » est déjà connue des développeurs C# avec les types nullables (par exemple le type int? qui permet de manipuler un entier défini sur 32 bits dans une variable de type référence).

Qu’en est-il du code des applications existantes ?
Bien entendu, les applications existantes, implémentées avec une version antérieure à la version 8 du langage C# peuvent être compilées. Elles généreront plus d’avertissements.

About: James RAVAILLE

Travaillant avec la plateforme Microsoft .NET depuis 2002, j’alterne les missions de formation et d’ingénierie avec cette plateforme. J’écris ce blog pour transmettre mes connaissances à tout développeur, qu’il soit débutant ou expérimenté.