Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

C# 6.0 – Tester le null plus facilement

[new:30/04/2015]La série des mini-tips sur les nouveautés de C# 6.0 continue. Aujourd’hui testons plus facilement les nulls pour l’écriture d’un code plus clair…

Null-Conditional Operators

Il s’agit d’une nouvelle feature de C# 6.0 qui va définitivement améliorer l’écriture du code et votre productivité ! Comme toute clarification du code l’effet de bord est aussi la diminution du risque de bogues ce qui est toujours bon à prendre…

L’astuce est d’une grande simplicité puisqu’il suffit d’ajouter un point d’interrogation après le nom d’une instance d’un type “nullable” avant d’indiquer le nom de la propriété à atteindre. Regardons cela de plus près :

C# 6.0 - Simple Condition (www.kunal-chowdhury.com)[3]

La première ligne montre le code habituel utilisant l’opérateur “?:” qui était déjà une simplification de syntaxe lorsqu’il fut ajouter à C#. Mais pour tester un null sur l’accès à une propriété c’est encore un peu verbeux.

Le rectangle rouge entoure l’utilisation de cette nouvelle syntaxe dans la seconde ligne qui fait exactement la même chose : si “emp” est nul alors on retourne “nul” sinon on accède à la propriété “Address”. Un seul point d’interrogation suffit dans ce cas.

Cela fonctionne bien entendu en mode “nested” (imbriqué) et on voit alors toute la clarification qu’apporte cette syntaxe :

C# 6.0 - Nested Conditions (www.kunal-chowdhury.com)[3]

Ici on cherche à accéder à la propriété “City” de la propriété “Address” de l’instance “emp” (qu’on suppose être de classe “Employee” par exemple).

Toute la première partie code montre l’utilisation de la syntaxe classique : celle sans l’opérateur “?:”, celle avec.

La dernière petite ligne minuscule nous montre l’équivalent avec la nouvelle syntaxe… Incroyablement plus concis, propre, lisible, maintenable et forcément moins sujet aux bogues.

On peut voir ci-dessous comment utiliser le nouvel opérateur en conjonction avec “??” pour retourner facilement une valeur par défaut différente de “null” :

C# 6.0 - Default Values in Conditions (www.kunal-chowdhury.com)[3]

La première ligne montre l’ancienne façon habituelle d’écrire le code, la ligne avec le rectangle rouge la nouvelle syntaxe. Dans cet exemple un “null” sera retourné sans erreur d’exécution si ‘””emp” est nul, si “emp.MemberOfGroups” est nul. De fait Count ne sera pas accéder si ces conditions de null se présentent, sinon c’est bien le Count qui sera retourné. Mais si l’une des conditions de null est rencontrée l’opérateur “??” retournera alors la valeur “-1”.

Conclusion

C# 6.0 n’apporte pas toujours des fonctions aussi puissantes que ne le furent par exemple l’apport de Linq ou du parallélisme, mais en améliorant sans cesse sa syntaxe, sa lisibilité, sa concision, Microsoft nous offre encore et toujours un langage au top de la technologie, agréable et puissant.

J’ai toujours aimer C# (mon premier titre MVP il y 7 ans l’était pour ce langage) et j’avoue que plus le temps passe plus je l’aime et moins je pourrais passer à autre chose car tout le reste me semble vraiment vieux, vide ou bricolé, voire les trois…

Stay Tuned !

blog comments powered by Disqus