Alles für die Softwareentwicklung mit C# und . NETDer ideale Begleiter für Ihre tägliche Arbeit mit C# und . NET! Von den Sprachgrundlagen über LINQ, asynchrone Programmierung und GUI-Anwendungen mit XAML bis zur Anbindungen von Datenbanken und KI ist alles dabei. Sie lernen . NET MAUI, Azure und das Entity Framework kennen. Auch wichtige Best Practices für die Softwareentwicklung wie Versionskontrolle, Unit Tests und etablierte Design Patterns stehen auf dem Programm. Dieses umfassende Handbuch führt Sie professionell durch die Praxis!
Aus dem Inhalt:
- Das erste Projekt aufsetzen
- Schleifen, Variablen, Methoden und mehr
- . NET kennenlernen
- Asynchron mit async/await und TPL
- LINQ
- Datenbankanbindung
- Cloud-Entwicklung mit Azure
- Cross-Plattform mit XAML
- 2D-Grafik
- Entity Framework
- Einführung in KI mit . NET
- Unit-Tests und Versionskontrolle
Inhaltsverzeichnis
Materialien zum Buch . . . 30
Über diese Auflage . . . 31
1. Allgemeine Einführung in . NET . . . 33
1. 1 . . . Warum . NET? . . . 33
1. 2 . . . . NET unter die Lupe genommen . . . 39
1. 3 . . . Assemblies . . . 51
1. 4 . . . Die Entwicklungsumgebung . . . 53
1. 5 . . . Git -- Versionskontrolle leicht gemacht . . . 62
2. Grundlagen der Sprache C# . . . 67
2. 1 . . . Konsolenanwendungen . . . 67
2. 2 . . . Grundlagen der C#-Syntax . . . 74
2. 3 . . . Variablen und Datentypen . . . 79
2. 4 . . . Operatoren . . . 105
2. 5 . . . Datenfelder (Arrays) . . . 118
2. 6 . . . Kontrollstrukturen . . . 127
2. 7 . . . Programmschleifen . . . 138
3. Das Klassendesign . . . 155
3. 1 . . . Einführung in die Objektorientierung . . . 155
3. 2 . . . Die Klassendefinition . . . 158
3. 3 . . . Referenz- und Wertetypen . . . 166
3. 4 . . . Die Eigenschaften eines Objekts . . . 167
3. 5 . . . Methoden eines Objekts . . . 176
3. 6 . . . Konstruktoren . . . 204
3. 7 . . . Der Destruktor . . . 211
3. 8 . . . Konstanten in einer Klasse . . . 212
3. 9 . . . Statische Klassenkomponenten . . . 214
3. 10 . . . Namensräume (Namespaces) . . . 221
3. 11 . . . Aktueller Stand der Klasse »Circle« . . . 232
4. Vererbung, Polymorphie und Interfaces . . . 235
4. 1 . . . Die Vererbung . . . 235
4. 2 . . . Der Problemfall geerbter Methoden . . . 244
4. 3 . . . Typkonvertierung und Typuntersuchung von Objektvariablen . . . 251
4. 4 . . . Polymorphie . . . 257
4. 5 . . . Weitere Gesichtspunkte der Vererbung . . . 265
4. 6 . . . Das Projekt »GeometricObjectsSolution« ergänzen . . . 268
4. 7 . . . Eingebettete Klassen . . . 272
4. 8 . . . Interfaces (Schnittstellen) . . . 272
4. 9 . . . Das Zerstören von Objekten -- der Garbage Collector . . . 292
4. 10 . . . Die Ergänzungen in den Klassen »Circle« und »Rectangle« . . . 299
5. Delegaten, Ereignisse und Lambda-Ausdrücke . . . 301
5. 1 . . . Delegaten . . . 301
5. 2 . . . Ereignisse eines Objekts . . . 311
5. 3 . . . Lambda-Ausdrücke . . . 328
5. 4 . . . Änderungen im Projekt »GeometricObjectsSolution« . . . 334
6. Strukturen, Records und Enumerationen . . . 339
6. 1 . . . Strukturen -- eine Sonderform der Klassen . . . 339
6. 2 . . . Datensatztypen -- Klassen mit Standards . . . 348
6. 3 . . . Klassen, Strukturen oder Records? . . . 352
6. 4 . . . Enumerationen (Aufzählungen) . . . 355
6. 5 . . . Boxing und Unboxing . . . 357
7. Fehlerbehandlung und Debugging . . . 359
7. 1 . . . Laufzeitfehler erkennen . . . 360
7. 2 . . . Debuggen mit Programmcode . . . 383
7. 3 . . . Fehlersuche mit Visual Studio . . . 391
8. Auflistungsklassen (Collections) . . . 399
8. 1 . . . Collections im Namespace »System. Collections« . . . 399
8. 2 . . . Die Klasse »ArrayList« . . . 403
8. 3 . . . Die Klasse »Hashtable« . . . 415
8. 4 . . . Die Klassen »Queue« und »Stack« . . . 421
8. 5 . . . Eigene Auflistungen mit »yield« durchlaufen . . . 424
8. 6 . . . Collection Expressions . . . 427
9. Generics -- generische Datentypen . . . 429
9. 1 . . . Bereitstellen einer generischen Klasse . . . 431
9. 2 . . . Bedingungen (Constraints) festlegen . . . 434
9. 3 . . . Generische Methoden . . . 438
9. 4 . . . Generische Attribute . . . 439
9. 5 . . . Generics und Vererbung . . . 441
9. 6 . . . Typkonvertierung von Generics . . . 443
9. 7 . . . Generische Delegaten . . . 444
9. 8 . . . »Nullable«-Typen . . . 445
9. 9 . . . Generische Collections . . . 447
9. 10 . . . Kovarianz und Kontravarianz generischer Typen . . . 452
9. 11 . . . Generische Mathematik . . . 457
9. 12 . . . Ergänzungen im Beispielprojekt »GeometricObjectsSolution« . . . 459
10. Weitere C#-Sprachfeatures . . . 461
10. 1 . . . Implizit typisierte Variablen . . . 461
10. 2 . . . Anonyme Typen . . . 462
10. 3 . . . Erweiterungsmethoden . . . 463
10. 4 . . . Spezielle Methoden . . . 467
10. 5 . . . Operatorüberladung . . . 474
10. 6 . . . »Nullable«-Referenztypen . . . 485
10. 7 . . . Die »with«-Anweisung . . . 490
10. 8 . . . Indexer . . . 491
10. 9 . . . Attribute . . . 498
10. 10 . . . Der bedingte NULL-Operator . . . 511
10. 11 . . . Der »nameof«-Operator . . . 513
10. 12 . . . Dynamisches Binden . . . 514
10. 13 . . . Tupel . . . 518
10. 14 . . . Pattern Matching (Musterabgleich) . . . 523
10. 15 . . . Rückgabewerte mit »ref« . . . 529
10. 16 . . . Unsicherer (unsafe) Programmcode -- Zeigertechnik in C# . . . 532
11. LINQ -- Language Integrated Query . . . 539
11. 1 . . . Einstieg in LINQ . . . 539
11. 2 . . . LINQ to Objects . . . 545
11. 3 . . . Die Abfrageoperatoren . . . 549
12. Arbeiten mit Dateien und Streams . . . 575
12. 1 . . . Einführung . . . 575
12. 2 . . . Namespaces der Ein- bzw. Ausgabe . . . 576
12. 3 . . . Laufwerke, Verzeichnisse und Dateien . . . 577
12. 4 . . . Die »Stream«-Klassen . . . 594
12. 5 . . . Die Klassen »TextReader« und »TextWriter« . . . 606
12. 6 . . . Die Klassen »BinaryReader« und »BinaryWriter« . . . 612
12. 7 . . . Serialisierung . . . 621
13. Multithreading . . . 631
13. 1 . . . Einführung in das Multithreading . . . 632
13. 2 . . . Threads -- allgemein betrachtet . . . 633
13. 3 . . . Mit der Klasse »Thread« arbeiten . . . 635
13. 4 . . . Der Threadpool . . . 647
13. 5 . . . Synchronisation von Threads . . . 648
13. 6 . . . Grundlagen asynchroner Methodenaufrufe . . . 673
14. Die Task Parallel Library (TPL) und das Task-based Async Pattern (TAP) . . . 687
14. 1 . . . Die wichtigsten Klassen der TPL . . . 688
14. 2 . . . Die Klasse »Task« . . . 688
14. 3 . . . Die Klasse »Parallel« . . . 701
14. 4 . . . Asynchrone Programmierung mit »async« und »await« . . . 708
15. Grundlegende . NET-Klassen . . . 715
15. 1 . . . Die Klasse »Object« . . . 715
15. 2 . . . Die Klasse »String« . . . 721
15. 3 . . . Die Klasse »StringBuilder« . . . 736
15. 4 . . . Der Typ »DateTime« . . . 742
15. 5 . . . Die Klasse »TimeSpan« . . . 747
15. 6 . . . Die Klassen »DateOnly« und »TimeOnly« . . . 750
15. 7 . . . Ausgabeformatierung . . . 751
16. Einführung in das Entity Framework Core . . . 761
16. 1 . . . Was ist das Entity Framework Core? . . . 761
16. 2 . . . Grundkonzepte und Projekt-Setup von EF Core . . . 767
16. 3 . . . Unser erstes Projekt . . . 772
16. 4 . . . Datenabfragen mit LINQ . . . 783
16. 5 . . . Weitere Datenbankzugriffe . . . 786
16. 6 . . . Eager, Lazy und Explicit Loading . . . 791
16. 7 . . . Modellierung von Beziehungen . . . 794
16. 8 . . . Die Arbeit mit Migrationen . . . 802
16. 9 . . . Data Seeding und Datenbankinitialisierung . . . 806
16. 10 . . . Modellierung von Vererbung und Polymorphie . . . 809
16. 11 . . . Performance und Tuning . . . 813
16. 12 . . . EF Core und moderne . NET-Features . . . 815
17. Desktop- und Cross-Platform-Entwicklung . . . 819
17. 1 . . . WinForms, WPF und . NET MAUI -- ein Vergleich . . . 819
17. 2 . . . Und was ist mit der UWP und WinUI 3? . . . 821
17. 3 . . . XAML (Extended Application Markup Language) . . . 823
17. 4 . . . Grundkonzepte von Windows Forms (WinForms) . . . 840
18. Windows Presentation Foundation . . . 845
18. 1 . . . Eine WPF-Anwendung und ihre Dateien . . . 845
18. 2 . . . Fenster in der WPF . . . 847
18. 3 . . . Nachrichtenfenster mit »MessageBox« . . . 848
18. 4 . . . Standarddialoge in der WPF . . . 850
18. 5 . . . Die WPF-Layoutcontainer . . . 850
18. 6 . . . WPF-Steuerelemente . . . 857
18. 7 . . . Ereignisse in der WPF . . . 866
18. 8 . . . Die Ereignishandler . . . 870
18. 9 . . . WPF-Datenbindung und WPF-Commands . . . 873
18. 10 . . . Die Klasse »Binding« . . . 876
18. 11 . . . WPF-Commands . . . 887
18. 12 . . . »RoutedCommand«-Objekte und »CommandBindings« . . . 898
18. 13 . . . Das MVVM-Pattern . . . 902
19. Einführung in . NET MAUI . . . 911
19. 1 . . . Was ist . NET MAUI? . . . 911
19. 2 . . . Architektur von . NET MAUI im Kontext von . NET . . . 913
19. 3 . . . Struktur eines MAUI-Projekts . . . 914
19. 4 . . . Eine erste Anwendung . . . 921
19. 5 . . . Zentrale Konzepte . . . 925
19. 6 . . . Datenbindung und MVVM mit . NET MAUI . . . 932
19. 7 . . . Plattformunabhängigkeit und plattformspezifischer Code . . . 940
19. 8 . . . Debugging und Deployment . . . 942
20. 2D-Grafik in WPF und . NET MAUI . . . 945
20. 1 . . . Shapes . . . 945
20. 2 . . . »Path«-Elemente . . . 949
20. 3 . . . »Brush«-Objekte . . . 953
20. 4 . . . 2D-Grafik in . NET MAUI . . . 965
21. Komponententests (Unit-Tests) . . . 967
21. 1 . . . Was ist ein Unit-Test? . . . 967
21. 2 . . . Ein erster Komponententest . . . 970
21. 3 . . . Komponententest schreiben und ausführen . . . 977
21. 4 . . . Die Klasse »TestContext« . . . 995
21. 5 . . . Data-Driven Unit-Tests (datengetriebene Tests) . . . 998
21. 6 . . . Lebenszyklus-Attribute . . . 1011
21. 7 . . . Testen mit »Assert« . . . 1016
21. 8 . . . Test-Driven Development -- TDD . . . 1025
22. Einführung in ASP. NET Core . . . 1027
22. 1 . . . Was ist ASP. NET Core? . . . 1027
22. 2 . . . Web-API-Projektstruktur und erste Schritte . . . 1032
22. 3 . . . Minimal APIs vs. klassische Controller-Architektur . . . 1040
22. 4 . . . Routing und Middleware . . . 1047
22. 5 . . . Dependency Injection . . . 1054
22. 6 . . . Konfiguration und Umgebungen . . . 1057
22. 7 . . . Entity Framework Core Integration . . . 1061
22. 8 . . . Authentifizierung und Autorisierung . . . 1068
22. 9 . . . Fehlerbehandlung und Logging . . . 1072
22. 10 . . . OpenAPI/Swagger . . . 1076
22. 11 . . . Deployment und Hosting . . . 1081
22. 12 . . . Unit-Testing von ASP. NET-Core-Anwendungen . . . 1085
23. Einführung in Blazor . . . 1089
23. 1 . . . Was ist Blazor? . . . 1089
23. 2 . . . Wie funktioniert Blazor? . . . 1093
23. 3 . . . Projektstruktur und Build-System . . . 1096
23. 4 . . . Blazor-Komponenten im Detail . . . 1106
23. 5 . . . Routing und Navigation . . . 1110
23. 6 . . . Datenbindung und Formulare . . . 1114
23. 7 . . . State Management . . . 1118
23. 8 . . . Interop mit JavaScript . . . 1122
23. 9 . . . Zugriff auf APIs und Backend . . . 1125
23. 10 . . . Blazor Hybrid für den Desktop . . . 1129
23. 11 . . . Fortgeschrittene Themen . . . 1132
24. Cloud-Entwicklung mit Azure . . . 1135
24. 1 . . . Was ist Microsoft Azure? . . . 1135
24. 2 . . . Überblick über Cloud-Computing . . . 1136
24. 3 . . . Cloud-Service-Modelle: PaaS, IaaS, und SaaS . . . 1138
24. 4 . . . Vorteile der Cloud-Entwicklung mit Azure . . . 1141
24. 5 . . . Azure-Ressourcenmanagement und -Architektur . . . 1142
24. 6 . . . Schlüsseldienste: Azure Compute, Storage, Databases und KI . . . 1147
24. 7 . . . Azure CLI und Azure PowerShell . . . 1152
24. 8 . . . Azure SDKs für . NET . . . 1155
24. 9 . . . Nutzung des Azure-Portals . . . 1159
24. 10 . . . Azure SQL Database und Cosmos DB . . . 1159
24. 11 . . . Azure Blob Storage . . . 1164
24. 12 . . . Azure Functions und Logic Apps . . . 1167
24. 13 . . . Azure Monitor und Application Insights . . . 1172
24. 14 . . . Einrichten von Azure DevOps . . . 1176
25. Softwareentwicklung in Zeiten von KI . . . 1179
25. 1 . . . Warum KI in der Softwareentwicklung? . . . 1179
25. 2 . . . Grundlagen der künstlichen Intelligenz . . . 1180
25. 3 . . . KI-Plattformen und Tools von Microsoft . . . 1185
25. 4 . . . Machine Learning mit ML. NET . . . 1189
25. 5 . . . Azure AI Services und Azure OpenAI in C# nutzen . . . 1198
25. 6 . . . Generative KI nutzen . . . 1204
25. 7 . . . Microsoft. Extensions. AI und Microsoft. Extensions. VectorData . . . 1214
25. 8 . . . Einsatz von KI in der Softwareentwicklung selbst . . . 1218
25. 9 . . . Ethik, Datenschutz und Verantwortung in der KI-Entwicklung . . . 1227
25. 10 . . . Best Practices und typische Fallstricke . . . 1229
Index . . . 1233