Enumérer de façon asynchrone (C# 8.0)

Cet article fait partie d’une série d’articles sur les apports fonctionnels de C# 8.0. Sommaire Rappels concernant yield Enumérer de façon asynchrone Syntaxe de l’énumération   Avec await foreach   Avec une itération manuelle Implémentation avec ConfigureAwait(false) Utiliser un CancellationToken C# 8 Fonctionnalités C# 8.0 Précisions sur les versions de C# Fonction locale statique Utilisation de using…

Continuer à lire

Disposer des objets de façon asynchrone (C# 8.0)

Cet article fait partie d’une série d’articles sur les apports fonctionnels de C# 8.0. Sommaire Rappels sur async/await Disposer des objets de façon asynchrone Finalize() et Dispose() IAsyncDisposable Utilisation de using sans {…}   Avec await using   Avec ConfigureAwait() C# 8 Fonctionnalités C# 8.0 Précisions sur les versions de C# Fonction locale statique Utilisation de using…

Continuer à lire

Références nullables (C# 8.0)

Cet article fait partie d’une série d’articles sur les apports fonctionnels de C# 8.0. Sommaire Référence nullable vs référence non-nullable Activer l’option de configuration Nullable Contexte nullable Se prémunir contre les valeurs nulles Opérateur !. (null-forgiving) Autres opérateurs contre les NullReferenceException   Opérateur ?. (null-conditional)   Opérateur ?[] (null-conditional)   Opérateur ?? (null-coalescing)   Opérateur ??= C# 8 Fonctionnalités…

Continuer à lire

Membre d’une structure en lecture seule avec readonly (C# 8.0)

Cet article fait partie d’une série d’articles sur les apports fonctionnels de C# 8.0. Sommaire Utilisation de readonly sur les membres d’une structure readonly sur des méthodes membres readonly sur des propriétés readonly au niveau d’un index Précisions sur les defensive copies readonly protège seulement des affectations C# 8 Fonctionnalités C# 8.0 Précisions sur les…

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

Amélioration de “fixed” (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 C# 7.3   GCHandle Fixed pattern   Implémentation de GetPinnableReference() Utiliser fixed pour déclarer un buffer C# 7 Fonctionnalités C# 7 Précisions sur les versions de C# Fonctions locales Arguments out d’une méthode Eviter les déclarations de variables…

Continuer à lire

Structure exclusivement stockée dans la pile: “ref struct” (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 readonly struct ref struct Managed pointer Span<T>   Utilisation de Span<T> suivant le framework   Fonctionnement stackalloc   Quantité de mémoire allouée sur la pile   Utilisation de stackalloc dans une expression readonly ref struct ref struct et…

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