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

Trouver l’origine d’une fuite mémoire avec WinDbg

Lors de l’exécution d’une application, des fuites mémoires peuvent subvenir y compris dans un cadre managé. Dans les pires cas, trouver l’origine de ces fuites peut s’avérer compliqué car elles peuvent se produire dans des circonstances qu’on a du mal à identifier ou reproduire. Par exemple, ces fuites peuvent se produire dans un environnement de…

Continuer à lire

Aide-mémoire sur les pointeurs et références en C++

Le but de cet article est de rappeler quelques éléments de syntaxe sur les pointeurs et références en C++. Sommaire Déclaration par valeur Référence Pointeur Référence managée (en C++/CLI) Pointeur et réference dans les appels de fonctions Arguments de fonctions Retour de fonction Membres d’une classe Comparaison d’objets On considère la classe suivante: Point.h Point.cpp…

Continuer à lire

Appeler des dépendances C++ à partir d’un exécutable .NET AnyCPU

Il existe différentes méthodes pour appeler des dépendances natives à partir de .NET (cf. Appeler des DLL natives à partir de .NET). Ces méthodes ont en commun de devoir charger la bibliothèque native de façon à exécuter le code qui s’y trouve. Le chargement de DLL par l’application appelante implique que l’architecture de cette dernière…

Continuer à lire

Installer une assembly native dans WinSxS

Plusieurs méthodes sont possibles pour référencer des dépendances natives: consommer des dépendances en utilisant des bibliothèques statiques, des bibliothèques dynamiques, référencer un objet avec une interface COM etc… Suivant le cas d’utilisation, chacune de ces méthodes peut s’avérer plus intéressante qu’une autre. Par exemple, utiliser des bibliothèques dynamiques a le grand avantage d’apporter une modularité…

Continuer à lire