Langage C# – Les types nullables

Présentation Les types nullables sont des types référence permettant de déclarer des variables représentant des types valeur qui peuvent contenir la valeur null. Seuls les types valeur ont un type nullable correspondant (les types référence sont déjà intrinsèquement nullable). Leur utilité est double : Pouvoir écrire des algorithmes avec des variables de type valeur dont
Read More »

Langage C# – Délimiter l’utilisation d’objets avec l’instruction « using »

Dans le langage C#, l’instruction using permet d’importer des espaces de noms d’assemblys référencés. Cette instruction a aussi une autre utilisation très utile. Elle permet de délimiter précisément l’utilisation d’un objet dans un bloc de code. Voici un exemple permettant d’enregistrer un message dans un fichier : public void EcrireMessage(string aMessage) {     using
Read More »

Framework .NET – Cryptage symétrique

Présentation Les classes du Framework .NET, permettant de crypter des données en utilisant un algorithme de cryptage symétrique, héritent de la classe System.Security.Cryptography.SymmetricAlgorithm du Framework .NET. Cette classe propose des données qui seront utilisés pour créer un objet de cryptage / décryptage : Un vecteur d’initialisation (propriété IV) permettant d’initialiser le cryptage et le décrytage
Read More »

Framework .NET Core – Compiler et exécuter dynamiquement du code C#

Le Framework .NET et le Framework .NET Core permettent de compiler et exécuter dynamiquement du code C#, qui peut être fourni par l’utilisateur ou par un logiciel, sans qu’il soit nécessaire de redémarrer le logiciel. La première technique proposée par Microsoft pour la compilation dynamique de code C# consistait à utiliser CodeDom, présent nativement au
Read More »

Langage C# – La pile et le tas

Lors de l’exécution de l’application, les données contenues dans les variables sont stockées dans deux structures en mémoire, appelées la pile et le tas. Soit les instructions suivantes : string s = "azerty"; int i = 5; Voici une illustration du stockage des données en mémoire : Pourquoi cette différence ? Parce que le type
Read More »

Langage C# – Créer facilement des objets qui pointent vers du code (délégués et expressions lambda)

Depuis 2008, au travers du Framework .NET, Microsoft propose deux délégués génériques permettant créer facilement des objets pointant vers du code : Func et Action. Les délégués (sous une autre forme) existaient déjà auparavant. Leur apparition a révolutionné le développement d’application en permettant : Aux procédures et fonctions d’accepter non seulement des données en paramètre,
Read More »

Langage C# – FindAll(…) ou Where(…) sur les collections pour filtrer ?

Pour obtenir un sous-ensemble de données ou d’objets d’une collection, les collections génériques de type List proposent deux méthodes : FindAll et Where. Par exemple, pour obtenir la liste des nombres entiers pairs contenus dans la liste oListeEntiers, nous pouvons écrire (au choix) : IEnumerable<int> oListeEntiersPairs = oListeEntiers.Where(i => i % 2 == 0); //
Read More »

Langage C# – Sécuriser les chaînes de caractères

Lors de l’exécution d’une application développée avec le langage C#, le contenu des variables de type System.String n’est pas sécurisé. Avec un logiciel tel que ProcessHacker, il est possible de consulter leur contenu. Ainsi, d’un point de vue sécurité, il n’est pas conseillé d’utiliser le type System.String pour créer des variables contenant des données sensibles
Read More »

Programmation Orientée Objet – Dépendances entre les classes

En conception et programmation orientée objet, il existe différentes manières « d’associer » les classes entre elles : L’association L’association entre deux classes permet d’indiquer qu’une classe est en liaison avec une autre. Par exemple, si un client peut passer des commandes, alors il est nécessaire d’associer les classes Client et Commande, afin de pouvoir
Read More »