C#10 et Visual Studio Code
Les fondamentaux du langage
Avant-propos
1. Introduction1
Chapitre1
Introduction
1. Qu'est-ce que C# ?9
1.1 Que peut-on réaliser avec C# ?10
1.2 Le langage est-il stable et pérenne ?12
2. Préparer son environnement13
2.1 Installation et configuration de Visual Studio Code14
2.2 Installer les outils de compilation16
3. Comment fonctionne le C# ?19
Chapitre2
Premier programme
1. Créer sa première application C#23
2. Comprendre et écrire du code C#27
2.1 Notions de variable et constante29
2.1.1 Types numériques31
2.1.2 Types textuels33
2.1.3 Valeur booléenne35
2.1.4 Opérateurs35
2.2 Les autres types38
2.2.1 Stockage des dates38
2.2.2 Les intervalles de temps40
3. Analyser la structure d'un projet C#41
3.1 La notion de blocs42
3.2 Signification des blocs de code44
3.2.1 Le bloc d'espace de noms44
3.2.2 La définition d'une classe47
3.2.3 La définition d'une méthode48
3.3 Déclaration « top-level »48
4. Exécuter un programme C#49
4.1 Lancer le programme avec Visual Studio Code49
4.2 Lancer depuis la ligne de commande51
5. Exercice54
5.1 Énoncé54
5.2 Corrigé54
Chapitre3
Programmation orientée objet
1. Principes de la programmation orientée objet57
1.1 Qu'est-ce qu'une classe ?57
1.1.1 Les classes dans Visual Studio Code59
1.1.2 L'héritage60
1.1.3 L'encapsulation61
1.2 Que peut-on déclarer dans une classe ?62
1.2.1 Les méthodes62
1.2.2 Déclarer une donnée65
1.3 Instancier une classe69
1.3.1 Le constructeur69
1.3.2 L'instanciation avec le mot-clé new71
1.4 Le polymorphisme73
2. Concepts avancés75
2.1 L'héritage avancé75
2.1.1 Méthodes virtuelles75
2.1.2 Classe abstraite76
2.1.3 Interface78
2.1.4 Implémentation par défaut dans une interface80
2.1.5 Masquage81
2.1.6 Interdire l'héritage82
2.2 Les différents types d'objets83
2.2.1 Les types références83
2.2.2 Les types valeurs84
2.2.3 Les types nullables87
2.2.4 Les types références nullables88
2.2.5 Les énumérations90
2.2.6 Les records91
2.3 Les modificateurs de classe93
2.3.1 La notion de static94
2.3.2 La notion de classe partielle95
3. Exercice96
3.1 Énoncé96
3.2 Corrigé97
Chapitre4
Algorithmique
1. Bases de l'algorithmique101
1.1 La logique conditionnelle101
1.1.1 Test simple : le if/else102
1.1.2 Multiples tests avec l'instruction switch108
1.1.3 Pattern matching110
1.1.4 Exercice - énoncé115
1.1.5 Exercice - corrigé115
1.2 Les collections116
1.2.1 L'interface IEnumerable116
1.2.2 Les tableaux117
1.2.3 La liste119
1.2.4 Les dictionnaires122
1.2.5 Les collections algorithmiques124
1.3 Les boucles126
1.3.1 Les généralités sur les boucles126
1.3.2 La boucle for127
1.3.3 La boucle while129
1.3.4 La boucle do while129
1.3.5 La boucle foreach130
1.3.6 Le mot-clé yield130
1.3.7 Exercice - énoncé131
1.3.8 Exercice - corrigé132
2. Gestion des erreurs135
2.1 Concept d'une exception135
2.2 Renvoyer une exception136
2.3 Gérer une exception139
2.3.1 Blocs try, catch et finally139
2.3.2 Filtre sur bloc catch141
2.4 Exceptions et performances143
Chapitre5
LINQ
1. Fonctionnement de base145
2. Variables anonymes148
3. Principes des opérateurs LINQ148
3.1 Opérateurs de production152
3.2 Opérateurs de sélection163
3.3 Opérateurs de génération169
4. Expression de requête LINQ169
4.1 Le mot-clé into170
4.2 Le mot-clé let172
5. Exercice173
5.1 Énoncé173
5.2 Corrigé174
Chapitre6
Sérialisaîion
1. Sérialisation en C#175
2. Sérialisation binaire176
2.1 Utilisation des attributs177
2.2 Utilisation de l'interface ISerializable181
3. Sérialisation XML183
3.1 XmlSerializer183
3.2 XDocument, XElement et XAttribute186
4. Sérialisation JSON190
4.1 Utf8JsonReader et Utf8JsonWriter191
4.2 JsonDocument194
4.3 JsonSerializer195
5. Exercice199
5.1 Énoncé199
5.2 Corrigé201
Chapitre7
Concepts avancés
1. Asynchronisme203
1.1 Fonctionnement de base203
1.2 Thread et asynchronisme205
1.3 Asynchronisme en C#206
1.4 Les mots-clés async et await207
1.5 Flux asynchrones210
2. Algorithmique avancée212
2.1 Programmation événementielle212
2.1.1 Les delegates212
2.1.2 Les events214
2.2 Les types génériques217
2.2.1 Utilisation standard217
2.2.2 Contraintes sur type générique219
2.3 Gestion de la mémoire220
2.3.1 Le destructeur221
2.3.2 IDisposable et IAsyncDisposable222
2.4 Paramètres de méthodes avancés223
2.4.1 Paramètre optionnel223
2.4.2 Mots-clés de paramètres224
2.4.3 Nommage de paramètres227
2.4.4 Paramètres variables228
2.5 Extension du fonctionnement d'un type228
2.5.1 Méthodes d'extension229
2.5.2 Définition des opérateurs230
2.6 Tuples et déconstruction233
2.6.1 Les tuples en C# 7233
2.6.2 Déconstruction de type235
2.7 Fonction locale237
Chapitre8
Créer des applications
1. Application web241
1.1 Applications web graphiques241
1.1.1 ASP.NET MVC242
1.1.2 ASP.NET Razor Pages247
1.1.3 Blazor252
1.2 API256
2. Application de bureau262
2.1 WinForms263
2.2 Windows Presentation Foundation (WPF)269
2.3 Universal Windows Platform (UWP)273
3. Application mobile278
3.1 Installation279
3.1.1 Installation à partir de la ligne de commande279
3.1.2 Installation avec Visual Studio 2022283
3.2 Code288
4. Conclusion290
Chapitre9
Référence
1. Introduction291
2. Mots-clés de type291
3. Mots-clés de programmation orientée objet293
4. Mots-clés algorithmiques297
Index303