C# 10
Développez des applications Windows avec Visual Studio 2022
Édition Eni
Avant-propos
Chapitre 1
Travailler avec Visual Studio 2022
1. Introduction19
2. L'interface de développement20
2.1 L'éditeur de texte22
2.2 Le concepteur de vues27
2.3 Le débogueur intégré28
2.4 Le gestionnaire d'extensions29
2.5 NuGet31
2.6 Fenêtres personnalisées33
3. La création de solutions33
3.1 Définir le point d'entrée34
3.2 La différence entre projets et solutions36
3.3 Configurer le projet37
3.4 La conversion de solutions39
3.5 Les projets partagés39
3.6 Les outils de refactorisation41
Chapitre 2
L'architecture .NET
1. Introduction43
2. CLR44
3. Les bibliothèques de classes45
4. Les types47
4.1 Les types valeur48
4.2 Les types référence49
Chapitre 3
Introduction au langage C#
1. La syntaxe51
1.1 Les identifiants51
1.2 Les mots-clés51
1.3 La ponctuation53
1.4 Les opérateurs54
1.4.1 Les opérateurs de calcul54
1.4.2 Les opérateurs d'assignation55
1.4.3 Les opérateurs de comparaison55
1.5 La déclaration de variables56
1.6 Les instructions de contrôle57
1.6.1 Les instructions conditionnelles57
1.6.2 Les instructions itératives62
1.6.3 Les instructions de saut65
1.7 Les commentaires67
2. Les espaces de noms70
2.1 Déclarer un espace de noms71
2.2 Le mot-clé using71
2.3 Le mot-clé alias72
2.4 Les classes statiques73
2.5 Les directives using globales73
3. Les types de base73
3.1 Les types numériques73
3.1.1 Les entiers74
3.1.2 Les décimaux75
3.2 Les booléens75
3.3 Les chaînes de caractères75
3.4 Les types nullable78
3.5 La conversion de types80
3.5.1 La conversion implicite80
3.5.2 La conversion explicite81
4. Les constantes et les énumérations82
4.1 Les constantes82
4.2 Les énumérations82
5. Les tableaux85
6. Les collections86
7. Les directives preprocessor88
Chapitre 4
La création de types
1. Introduction91
2. Les niveaux d'accès92
3. Les structures93
4. Les classes94
4.1 Les champs94
4.2 Les propriétés95
4.3 Les méthodes98
4.3.1 La surcharge100
4.3.2 Les paramètres100
4.3.3 Les tuples107
4.3.4 Les méthodes partielles107
4.4 Les constructeurs108
4.5 Les destructeurs109
4.6 Les classes et membres statiques110
4.7 Les classes partielles110
4.8 Le mot-clé this112
4.9 Les indexeurs113
4.10 Les attributs114
4.11 La surcharge d'opérateurs115
4.11.1 Les opérateurs arithmétiques116
4.11.2 Les opérateurs de comparaison118
5. Les records120
Chapitre 5
L'héritage
1. L'héritage de classe121
1.1 Implémenter l'héritage121
1.2 Les membres virtuels123
1.3 Masquer les membres hérités124
1.4 Le mot-clé base125
1.5 Les classes et membres abstraits125
1.6 Les classes et les méthodes scellées126
1.7 Les constructeurs dérivés128
1.8 Le polymorphisme130
2. Les interfaces132
2.1 L'implémentation d'interfaces132
2.2 Le polymorphisme d'interface134
2.3 L'héritage d'interfaces136
Chapitre 6
Types génériques
1. Introduction137
2. La création de types génériques138
3. Les contraintes de type141
4. Les interfaces génériques142
4.1 La variance dans les interfaces génériques143
4.1.1 La covariance143
4.1.2 La contravariance144
4.2 La création d'interfaces génériques variantes145
4.3 L'héritage d'interfaces génériques variantes146
5. La création de méthodes génériques147
6. Valeur par défaut générique150
7. L'héritage de classe générique150
Chapitre 7
Délégués, événements et expressions lambda
1. Les délégués151
1.1 Les paramètres de méthode152
1.2 Les méthodes cibles multiples153
1.3 Les délégués génériques154
1.4 La compatibilité des délégués154
2. Les événements156
3. Les expressions lambda159
3.1 L'utilisation des expressions lambda160
3.2 Les délégués génériques162
3.3 La capture de variable162
3.4 Les fonctions locales165
Chapitre 8
Création de formulaires
1. Utiliser les formulaires167
1.1 Ajouter des formulaires au projet167
1.2 Modifier le formulaire de démarrage170
1.3 Les propriétés des formulaires170
1.4 Les méthodes des formulaires173
1.5 Les événements des formulaires174
2. Utiliser les contrôles175
2.1 Les types de contrôles175
2.2 Ajouter des contrôles aux formulaires177
2.3 Les propriétés des contrôles179
2.4 Les menus181
2.5 Les conteneurs183
2.6 L'ergonomie185
2.7 Ajouter des contrôles à la boîte à outils186
Chapitre 9
Implémentation de gestionnaires d'événements
1. Introduction189
2. La création de gestionnaires d'événements190
2.1 La mécanique d'un événement192
2.2 L'ajout dynamique d'un gestionnaire d'événements192
2.3 La suppression dynamique d'un gestionnaire d'événements193
3. Les gestionnaires d'événements avancés194
3.1 Un gestionnaire pour plusieurs événements194
3.2 Plusieurs gestionnaires pour un événement195
Chapitre 10
Validation de la saisie
1. Introduction197
2. La validation au niveau des champs197
2.1 Les propriétés de validation197
2.2 Les événements de validation198
2.2.1 KeyDown et KeyUp198
2.2.2 KeyPress199
2.2.3 Validating et Validated199
3. La validation au niveau du formulaire201
4. Les méthodes de retour à l'utilisateur204
4.1 MessageBox205
4.2 ErrorProvider206
Chapitre 11
Création de contrôles utilisateurs
1. Introduction209
2. Les contrôles personnalisés210
3. L'héritage de contrôles212
4. Les contrôles utilisateurs214
Chapitre 12
Création d'applications UWP
1. Introduction221
2. Principes222
3. Les outils de développement224
4. Le langage XAML226
5. Une première application UWP229
5.1 Les bases d'un projet UWP229
5.2 Les contrôles et événements231
5.3 Les styles232
Chapitre 13
Débogage
1. Les types d'erreurs237
1.1 Les erreurs de syntaxe237
1.2 Les erreurs d'exécution238
1.3 Les erreurs de logique240
2. Le débogueur240
2.1 Contrôler l'exécution242
2.2 Les points d'arrêt243
2.2.1 Les conditions d'arrêt244
2.2.2 Le nombre d'accès245
2.2.3 Le filtrage246
2.2.4 Les actions246
2.2.5 Exécuter l'exécution jusqu'ici247
2.3 Les DataTips247
2.4 Les PerfTips248
2.5 Les attributs Caller249
3. Les fenêtres251
3.1 La fenêtre Sortie252
3.2 La fenêtre Variables locales252
3.3 La fenêtre Automatique253
3.4 La fenêtre Espion253
3.5 La fenêtre Exécution254
3.6 Les autres fenêtres255
Chapitre 14
Gestion des exceptions
1. La classe Exception257
2. La création d'exceptions personnalisées258
3. Le déclenchement des exceptions259
4. L'interception et la gestion des exceptions262
Chapitre 15
Monitoring
1. Le traçage269
1.1 Les classes Debug et Trace269
1.2 La collection d'écouteurs272
1.2.1 La création d'écouteurs272
1.2.2 La sauvegarde des traces273
1.3 Les commutateurs de trace275
1.3.1 Le fonctionnement des commutateurs de trace275
1.3.2 La configuration des commutateurs de trace276
2. Les journaux d'événements277
2.1 L'interaction avec les journaux d'événements278
2.2 La gestion des journaux d'événements279
2.3 L'écriture d'événements280
3. Les compteurs de performance281
3.1 La création de compteurs de performance282
3.1.1 Depuis Visual Studio282
3.1.2 Depuis le code283
3.2 L'utilisation de compteurs de performance285
3.3 L'analyse de compteurs de performance288
Chapitre 16
Tests unitaires
1. Introduction aux tests unitaires291
1.1 La création du projet291
1.2 Les classes de tests unitaires292
2. La mise en place d'une série de tests294
2.1 La création de tests au projet294
2.2 Le déroulement des tests295
Chapitre 17
Création du modèle de données
1. Introduction299
2. La création d'un modèle300
3. La création d'entités302
4. La génération de la base de données308
5. La création d'entités à partir du code (Code First)313
Chapitre 18
Présentation d'Entity Framework
1. Introduction319
2. Le mappage320
2.1 La couche logique320
2.2 La couche conceptuelle322
2.3 La couche de mappage325
3. Travailler avec les entités326
3.1 Les entités328
3.2 La classe DbContext329
3.3 Les relations330
3.3.1 Le concept de table par type330
3.3.2 Le concept de table par hiérarchie330
Chapitre 19
Présentation de LINQ
1. Les requêtes LINQ333
1.1 La syntaxe333
1.2 Les méthodes d'extension334
2. Les opérateurs de requêtes336
2.1 Filtrer336
2.1.1 Where336
2.1.2 OfType<TResult>336
2.1.3 SelectMany337
2.1.4 Skip et Take337
2.2 Ordonner338
2.2.1 OrderBy338
2.2.2 ThenBy339
2.3 Grouper339
2.3.1 GroupBy339
2.3.2 Join340
2.4 Agréger341
2.5 Convertir341
3. Les requêtes parallèles342
3.1 Partitionner une requête343
3.2 Annuler une requête344
Chapitre 20
LINQ to Entities
1. Introduction345
2. Extraire les données346
2.1 L'extraction simple346
2.2 L'extraction conditionnelle347
3. Ajouter, modifier et supprimer des données349
3.1 Ajouter des données349
3.2 Modifier des données350
3.3 Supprimer des données350
3.4 L'envoi des modifications350
Chapitre 21
LINQ to SQL
1. La création de classes LINQ to SQL351
2. L'objet DataContext354
2.1 La méthode ExecuteQuery355
2.2 Utiliser des transactions355
2.3 Les autres membres de DataContext356
3. Exécuter des requêtes avec LINQ357
3.1 Les requêtes simples357
3.2 Les requêtes filtrées358
3.3 Les requêtes de jointure358
4. Les procédures stockées358
4.1 L'ajout de procédures stockées au modèle359
4.2 L'exécution de procédures stockées360
Chapitre 22
LINQ to XML
1. Les objets XML361
1.1 XDocument361
1.2 XElement362
1.3 XNamespace363
1.4 XAttribute364
1.5 XComment364
2. Exécuter des requêtes avec LINQ365
2.1 Les requêtes simples365
2.2 Les requêtes filtrées366
2.3 Les requêtes de jointure366
Chapitre 23
Le système de fichiers
1. Les classes de gestion du système de fichiers367
1.1 DriveInfo367
1.2 Directory et DirectoryInfo369
1.3 File et FileInfo371
1.4 Path374
2. Travailler avec le système de fichiers377
2.1 Les objets Stream377
2.2 La classe FileStream377
2.3 Lire un fichier texte379
2.3.1 Lire avec la classe File379
2.3.2 Lire avec la classe StreamReader380
2.4 Écrire dans un fichier texte382
2.4.1 Ecrire avec la classe File382
2.4.2 Ecrire avec la classe StreamWriter383
Chapitre 24
Sérialisation
1. Introduction385
2. La sérialisation binaire386
2.1 Les bases386
2.2 Contrôler la sérialisation388
2.2.1 Le contrôle par attribut388
2.2.2 Le contrôle par interface390
3. La sérialisation XML393
3.1 Les bases394
3.2 Contrôler la sérialisation397
3.3 La sérialisation XML SOAP398
Chapitre 25
Expressions régulières
1. Introduction401
2. Une première expression régulière402
3. Les options de recherche493
4. Les caractères d'échappement404
5. Les ensembles404
6. Les groupes406
7. Les ancres407
8. Les quantifieurs408
Chapitre 26
Multithreading
1. Introduction409
2. La classe Thread410
2.1 Créer un thread410
2.2 Suspendre un thread411
2.3 Échanger des données avec un thread412
2.4 Verrouiller un thread414
2.5 Priorité des threads415
3. Fonctions asynchrones416
3.1 Task et Task<TResult>417
3.2 async et await419
4. Le composant BackgroundWorker421
Chapitre 27
Globalisation et localisation
1. Introduction425
2. La culture426
3. La globalisation428
4. La localisation430
Chapitre 28
Sécurité
1. Introduction435
2. Les éléments de base436
2.1 L'interface IPermission436
2.2 La classe CodeAccessPermission437
2.3 L'interface IPrincipal437
3. Implémentation de la sécurité439
3.1 La sécurité basée sur les rôles439
3.2 La sécurité basée sur les droits d'accès441
3.2.1 Sécurité impérative441
3.2.2 Sécurité déclarative442
4. Introduction à la cryptographie443
Chapitre 29
Pour aller plus loin
1. Le dessin avec GDI+447
1.1 La classe Graphics448
1.1.1 Les coordonnées448
1.1.2 Les formes449
1.2 La structure Color et les classes Brush et Pen451
1.2.1 La structure Color451
1.2.2 La classe Brush452
1.2.3 La classe Pen452
1.2.4 Les paramètres système453
1.3 Les exemples453
1.3.1 L'affichage de texte453
1.3.2 Redimensionner une image455
2. Le remoting456
2.1 Le principe456
2.2 L'implémentation457
2.2.1 La couche commune457
2.2.2 L'application serveur458
2.2.3 L'application cliente460
3. Reflection464
3.1 La classe System.Type464
3.2 Charger un assemblage dynamiquement466
3.2.1 L'énumération des types466
3.2.2 L'instanciation d'objets467
3.2.3 L'utilisation des membres468
Chapitre 30
Assemblages et configurations
1. Introduction471
2. Les assemblages privés472
3. Les assemblages partagés475
4. Les fichiers de configuration476
Chapitre 31
Déploiement
1. Introduction479
2. Les projets de déploiement480
2.1 XCOPY480
2.2 Projet CAB481
2.3 Projet de module de fusion482
2.4 Projet d'installation482
3. L'assistant Installation483
4. Configuration du projet487
4.1 Les propriétés du projet487
4.2 Les éditeurs de configuration490
4.2.1 Éditeur du système de fichiers491
4.2.2 Éditeur du registre492
4.2.3 Éditeur des types de fichiers493
4.2.4 Éditeur de l'interface utilisateur495
4.2.5 Éditeur des actions personnalisées497
4.2.6 Éditeur des conditions de lancement498
Index501