Aide-mémoire pattern matching C#

Cet article est un aide-mémoire des motifs les plus courants de pattern matching suivant les versions de C# pour aider à se rappeler de la syntaxe: Motif Version C# Remarques et exemples Null pattern C# 7.0 Test pour vérifier si une variable est nulle Vehicle vehicle = new Car(); if (vehicle is null) Console.WriteLine($”{nameof(vehicle)} is…

Continuer à lire

Fonctionnalités C# 7

La version 7 de C# a été très riche en fonctionnalités, le but de cet article est de les résumer et de les expliquer. Dans un premier temps, on explicitera le contexte de C# 7 par rapport aux différents frameworks qui permettent de l’utiliser. Ensuite, on rentrera dans le détail des fonctionnalités. Les fonctionnalités les…

Continuer à lire

ValueTask (C# 7)

Cet article fait partie d’une série d’articles sur les apports fonctionnels de C# 7 (i.e. C# 7.0/7.1/7.2/7.3). Sommaire Avant de commencer… async/await FromResult(), FromException() et FromCanceled() ConfigureAwait()   Contexte de synchronisation   TaskScheduler   ConfigureAwait(false) ValueTask Compatibilité avec async/await ValueTask ne convient pas à tous les usages   Cas synchrone   Cas asynchrone IValueTaskSource A partir de C# 7.0, quelques…

Continuer à lire

Pattern matching (C# 7, C# 8.0)

Cet article fait partie d’une série d’articles sur les apports fonctionnels de C# 7 (i.e. C# 7.0/7.1/7.2/7.3) et C# 8.0. Sommaire Avec is Avec switch Switch…case   when avec switch…case var pattern avec is ou switch…case Expression switch   Discard pattern   when avec une expression switch   var pattern   Tuple pattern   Positional pattern   Property pattern Objets de type…

Continuer à lire

Tuple et ValueTuple (C# 7)

Cet article fait partie d’une série d’articles sur les apports fonctionnels de C# 7 (i.e. C# 7.0/7.1/7.2/7.3). Sommaire Amélioration à partir de C# 7.0 Initialisation Utiliser des noms de membres explicites Noms de membres déterminés par des variables existantes Utiliser .Item1, .Item2, …, .Item<N> est toujours possible Affectation entre System.ValueTuple Déconstruction Ignorer une variable inutile…

Continuer à lire

Manipuler des objets de type valeur par référence (C# 7)

Cet article fait partie d’une série d’articles sur les apports fonctionnels de C# 7 (i.e. C# 7.0/7.1/7.2/7.3). Sommaire Avant de commencer… Type valeur vs type référence   Objets de type référence   Objets de type valeur Boxing vs Unboxing   Boxing   Unboxing Passage d’argument par référence d’un objet de type valeur Passage en argument d’une référence par référence…

Continuer à lire