C# 10 - Améliorations apportées aux expressions lambda
La version 10 du langage C# apporte quelques améliorations concernant les expressions lambda.
L’inférence de type a été améliorée. Dorénavant, il n’est plus nécessaire de préciser le type d’une variable contenant une fonction lambda. Nous pouvons simplement la déclarer avec le mot clé var. Voici un exemple :
var returnOne = () => 1;
Jusqu’à la version 9 du langage C#, cette instruction aurait généré l’erreur de compilation suivante :
Impossible d'assigner expression lambda à une variable implicitement typée
Pour faciliter le travail du compilateur ou modifier le type de retour d’une expression lambda, il peut être précisé. Pour ce faire, il faut préfixer la fonction lambda par le type de retour souhaité :
var createException = Exception (bool b) => b ? new ArgumentNullException() : new DivideByZeroException();
Les attributs peuvent désormais être appliqués aux fonctions lambda et à leurs paramètres. Comme précédemment, l’utilisation d’attributs imposera les parenthèses pour le paramètre i :
Func<int, bool> isEven = [Description("Valeur")] (i) => i % 2 == 0;
Ou
var isEven = [Description("Valeur")] bool (int i) => i % 2 == 0;