Bernhard Wurm ist Softwareentwickler aus Leidenschaft und kann sich noch sehr gut an seine ersten Programmierversuche erinnern. Er weiß, dass gute Nerven und Ausdauer genauso gefragt sind wie Neugierde und Spaß am logischen Denken. Auf jeden Fall hat ihn noch kein Programm in die Knie gezwungen; er studierte prompt Information Engineering und Management sowie Software Engineering. Inzwischen leitet er ein österreichisches Software-Unternehmen. Seine Interessen sind breit gestreut, aber immer computer-affin: Sie reichen von Distributed Computing über die digitale Bilderverarbeitung und Software-Architekturen bis hin zu den neuesten Technologien.
1. Ein guter Start ist der halbe Sieg. Compiler und Entwicklungsumgebungen ... 25
Compiler und Compiler ... 26
Du brauchst eine IDE! ... 30
Der Spaß geht los! ... 32
Dein erstes Projekt ... 33
Theorie und Praxis ... 39
Was gelernt! ... 41
2. Ein netter Typ. Datentypen und deren Behandlung ... 43
Dieses Glas für diesen Wein ... 44
Grundlagen im Kamelreiten ... 48
Übungen für den Barkeeper ... 50
Rechnen mit Transvestiten ... 50
Alles nur Klone! ... 56
Ja oder nein? ... 57
Was gibt's zu essen? ... 58
Das ständige Hin und Her zwischen ja und nein ... 60
Gut kommentieren! ... 61
Kommentare im Einsatz ... 62
Andere für sich denken lassen ... 62
Compiler-Spiele ... 63
Viele neue Freunde ... 64
3. Alles unter Kontrolle. Bedingungen, Schleifen und Arrays ... 65
Bedingungen ... 66
In der Kürze liegt die Würze ... 69
Durch Variationen bleibt es interessant ... 70
Der Herr der Fernbedienung ... 72
Ist noch Bier da? ... 74
Switch-Expressions ... 77
Pattern-Matching ... 78
Zwillinge ... 79
Zwillinge ... 79
Ein Schuhschrank muss her ... 82
Arbeiten in den Tiefen des Schuhschranks -- von Kopf bis Fuß ... 83
Die ganze Welt ist Mathematik und aller guten Dinge sind vier ... 85
Schau's dir an mit dem Debugger ... 86
Solange du nicht fertig bist, weitermachen ... ... 87
Ich habe es mir anders überlegt ... 88
Oder mach doch weiter ... ... 89
Zurück zu den Schuhschränken ... 90
Wenn aus einem Schuhschrank eine Lagerhalle wird ... 91
Wiederholung, Wiederholung! ... 93
Code muss man auch lesen können ... 94
Jetzt kommt das coole Zeug! ... 96
Arrays verbinden ab C# 12 ... 100
Der Blick durchs Fenster ... 102
... oder einmal alles ... 103
4. Sexy Unterwäsche -- von kleinen Teilen bis gar nichts. Strings, Characters und Nullable Types ... 105
Zeichenketten -- Strings ... 106
Kleine Teile -- einzelne Zeichen ... 107
Kleine und große Teile ... 108
Einfacher und schneller ... 109
Noch einfacher: Variablen im Text verwenden ... 112
Etwas Besonderes sollte es sein ... 113
Verdrehte Welt ... 114
Sein oder nicht sein? ... 117
Verweise auf nichts ... 120
Nichts im Einsatz ... 122
Damit bei so viel null nichts verloren geht ... 123
5. Eine endliche Geschichte. Enumerationen ... 125
Rot -- Gelb -- Grün ... 126
Tageweise ... 128
Tell me why I don't like mondays ... ... 131
WoW-Völker ... 132
Eine Mischung aus Zahlen und Arrays ... 134
Stimmungsbilder in der Praxis ... 137
Haltet das Banner hoch! ... 140
Auf wenige Sätze heruntergebrochen ... 143
6. Teile und herrsche. Methoden ... 145
Teilen statt Kopieren ... 146
Originale und überteuerte Kopien ... 149
Eins ist nicht genug ... 153
Wenn sich nichts bewegt und alles statisch ist ... 155
Ich hätte gerne das Original! ... 155
Sommerschlussverkauf -- alles muss raus ... 156
Tauschgeschäfte, die nicht funktionieren ... 158
TryParse und Enums ... 159
Zum Schluss noch ganz kurz ... ... 161
Ich will das ganz anders oder auch gar nicht -- Methoden überladen ... 163
Das Ganze noch einmal umgerührt ... 166
Ein knurrender Magen spornt bestimmt zu Höchstleistungen an ... 168
Originale zurücksenden ... 169
Maximale Originale ... 171
Eine kleine Zusammenfassung für dich ... 172
7. Klassengesellschaft. Objekte, Eigenschaften und Sichtbarkeiten ... 173
Mein Alter, meine Augenfarbe, mein Geburtsdatum ... 174
Eine Aufgabe für den Accessor ... 178
Ich sehe was, was du nicht siehst ... 179
Eigenschaften aufpoliert und bereit für die Bühne ... 180
Tanzen mit Elvis -- wenn keiner da ist, ist keiner da ... 182
Geheimniskrämerei und Kontrollfreak ... 183
Darf ich jetzt oder nicht? ... 184
Zusammen, was zusammengehört! ... 188
Zusammen und doch getrennt ... 190
Laufen, kämpfen, sterben ... 192
Vom Leben und Sterben ... 193
Geburtenkontrolle und detektivisches Talent ... 197
Mehrlingsgeburt ... 201
Partielle Klassen ... 204
Meine partiellen Daten ... 206
Gemeinsame Werte von dicken Freunden ... 207
Eigene Wertetypen ... 208
Strukturen überall ... 210
Strukturen ohne Namen ... 214
Ich habe viele Namen ... 216
Eigene Typen nochmals vom Sofa aus betrachtet ... 217
Die Nachteile der Wertetypen ausgetrickst ... 220
Gelernt ist gelernt! ... 223
8. Es wird Zeit für Übersicht! Namespaces ... 225
Eine Ordnung für die Klassen ... 226
Was ist denn nur in diesem Namespace vorhanden? ... 229
Vorhandene Systembausteine ... 231
Visual Studio findet die Namespaces für dich ... 234
Statische Klassen einbinden ... 234
Mathematik für Einsteiger ... 235
Zum Mitnehmen ... 236
9. Erben ohne Sterben. Objektorientierte Programmierung ... 237
Geisterstunde ... 238
Schleimgeister sind spezielle Geister ... 240
Fünf vor zwölf ... 242
Geister fressen, Schleimgeister fressen, Kannibalen fressen -- alles muss man einzeln machen ... 248
Enterben ... 249
Geister haben viele Gestalten ... 249
Geister, die sich nicht an die Regeln halten ... 252
Gestaltwandler unter der Lupe ... 253
Nochmals drüber nachgedacht ... 254
Hier noch ein Merkzettel ... 258
10. Abstrakte Kunst. Abstrakte Klassen und Interfaces ... 259
Abstrakte Klassen ... 260
Unverstandene Künstler ... 262
Das Meisterwerk nochmals betrachtet ... 264
Abstrakte Kunst am Prüftisch ... 265
Allgemein ist konkret genug ... 267
Fabrikarbeit ... 268
Alles unter einem Dach ... 269
Kaffee oder Tee? Oder doch lieber eine Cola? ... 270
Kaffeemaschine im Einsatz ... 272
Eine Cola bitte ... 274
Freundin vs. Chef -- Runde 1 ... 276
Bei perfekter Verwendung ... ... 277
Freundin vs. Chef -- Runde 2 ... 278
Freundin vs. Chef -- Runde 3 ... 280
Interfaces außer Rand und Band ... 281
In der Praxis: Mehr als nur Beschreibungen ... 282
Abstraktion und Interfaces auf einen Blick ... 287
11. Gleich und doch ganz anders. Records, der Star unter den eigenen Datentypen ... 289
Immutability -- die Würfel sind gefallen ... 290
Orcs, Trolle und Elfen als Klassen, Strukturen und Records ... 293
12. Airbags können Leben retten. Exceptionhandling ... 297
Mach's stabil! ... 298
Einen Versuch war es wert ... 300
Nur unter bestimmten Umständen ... 303
Fehler über Fehler ... 304
Über das Klettern auf Bäume ... 308
Klettern auf nicht vorhandene Bäume -- NullReferenceException ... 308
Auf Sträucher klettern -- FormatException ... 309
Sträucher im Sägewerk -- ArgumentException ... 310
Bezahlung ohne Ware -- ArgumentNullException ... 310
Bewusste Fehler ... 311
Selbst definierte Fehler ... 312
Fehler in freier Wildbahn ... 313
Das Matruschka-Prinzip ... 314
Alles noch einmal aufgerollt ... 316
Dein Fehler-Cheat-Sheet ... 320
13. Ein ordentliches Ablagesystem muss her. Collections und Laufzeitkomplexität ... 321
Je größer der Schuhschrank, desto länger die Suche ... 322
Komplizierte Laufschuhe ... 323
Geschwindigkeitsprognosen ... 326
Es muss nicht immer gleich quadratisch sein ... 328
Geschwindigkeitseinschätzung und Buchstabensuppe ... 330
Selbstwachsende Schuhschränke ... 334
Eine Array-Liste ... 335
Ringboxen ... 336
Listige Arrays und ihre Eigenheiten ... 337
Listige Arrays und ihre Verwendung ... 337
The Need for Speed ... 338
The Need for Speed ... 338
The Need for Speed ... 338
The Need for Speed ... 338
Es wird konkreter ... 339
Sortieren bringt Geschwindigkeit -- SortedList ... 342
Listenreiche Arbeit ... 344
Es geht noch schneller! ... 346
Im Rausch der Geschwindigkeit ... 348
Alternative Initialisierungen ... 350
Wörterbücher in der Anwendung... oder was im Regelfall schiefgeht ... 351
Von Bäumen und Ästen ... 355
Ein Verwendungsbeispiel ... 356
Alles eindeutig -- das HashSet ... 357
Schnelles Arbeiten mit Sets ... 358
Das große Bild ... 360
Der große Test, das Geheimnis und die Verwunderung ... 363
Noch einmal durchleuchtet ... 368
Dein Merkzettel rund um die Collections aus Laufzeiten ... 373
14. Allgemein konkrete Implementierungen. Generizität ... 375
Konkrete Typen müssen nicht sein ... 376
Das große Ganze ... 377
Mülltrennung leicht gemacht ... 378
Der Nächste bitte ... 381
Allgemein, aber nicht für jeden! ... 383
Immer das Gleiche und doch etwas anderes ... 385
Fabrikarbeit ... 387
Aus allgemein wird konkret ... 388
Hier kommt nicht jeder Typ rein. ... 389
Ähnlich, aber nicht gleich! ... 390
Varianzen hin oder her ... 392
Varianzen in der Praxis ... 395
WoW im Simulator ... 398
Damit's auch hängen bleibt ... 400
15. Linke Typen, auf die man sich verlassen kann. LINQ ... 401
Shoppen in WoW ... 405
Gesund oder gut essen? ... 408
Listen zusammenführen ... 409
Fix geLINQt statt handverlesen ... 416
Merkzettel ... 420
16. Blumen für die Dame. Delegaten und Ereignisse ... 421
Ein Delegat übernimmt die Arbeit ... 422
Im Strudel der Methoden ... 425
Die Butlerschule ... 428
Die Wahl des Butlers ... 431
Ereignisreiche Tage ... 432
Eine Runde für alle ... 435
Auf in die Bar! ... 436
Wiederholung, Wiederholung ... 439
Die delegierte Zusammenfassung ... 442
17. Der Standard ist nicht genug. Extension-Methoden und Lambda-Expressions ... 443
Extension-Methoden ... 444
Auf die Größe kommt es an ... 448
Erweiterungen nochmals durchschaut ... 450
Softwareentwicklung mit Lambdas ... 452
Lambda-Expressions auf Collections loslassen ... 455
Ein Ausritt auf Lamas ... 456
Filtern ... 456
Gruppieren ... 458
Verknüpfen ... 459
Gruppieren und Verknüpfen kombiniert ... 460
Left Join ... 461
VerLINQte LAMbdAS ... 463
Lamas im Schnelldurchlauf ... 466
18. Die Magie der Attribute. Arbeiten mit Attributen ... 467
Die Welt der Attribute ... 468
Die Magie erleben ... 470
Das Ablaufdatum-Attribut ... 472
Die Magie selbst erleben ... 473
Eine magische Reise in dein Selbst ... 474
In den Tiefen des Kaninchenbaus ... 477
Der Attribut-Meister erstellt eigene Attribute! ... 480
Meine Klasse, meine Zeichen ... 482
Selbstreflexion ... 484
Die Psychologie lehrt uns: Wiederholung ist wichtig! ... 488
19. Ich muss mal raus. Dateizugriff und das Internet ... 489
Daten speichern ... 490
Rundherum oder direkt rein ... 491
Rein in die Dose, Deckel drauf und fertig ... 493
Deine Geheimnisse sind bei mir nicht sicher ... 494
Das Mysterium der Dateiendungen ... 497
Das Gleiche und doch etwas anders ... 500
Das Lexikon vom Erstellen, Lesen, Schreiben, Umbenennen ... 501
Ran an die Tastatur, rein in die Dateien ... 506
Von der Sandburg zum Wolkenkratzer ... 508
Fließbandarbeit ... 512
Wenn das Fließband nicht ganz richtig läuft ... 515
Dem Fließband vorgeschalteter Fleischwolf ... 519
Nutze die Attributmagie! ... 521
X(M)L entspricht XXL ... 522
Der Größenvergleich ... 523
Die kleinste Größe -- JSON ... 524
Wir sind viele ... 525
Schru00F6dinger ... 529
Das World Wide Web. Unendliche Weiten ... 532
Deine Seite, meine Seite ... 534
Probe, Probe, Leseprobe ... 536
Punkt für Punkt fürs Hirn ... 538
20. Komm zurück, wenn du fertig bist. Asynchrone und parallele Programmierung ... 539
Zum Beispiel ein Download-Programm ... 540
Was so alles im Hintergrund laufen kann ... 547
Gemeinsam geht es schneller ... 549
Jetzt wird es etwas magisch ... 553
Wenn jeder mit anpackt, dann geht alles schneller ... 555
Rückzug bei Kriegsspielen ... 558
async/await/cancel ... 560
Unkoordinierte Koordination ... 562
Anders und doch gleich ... 567
Gemeinsam Kuchen backen ... 568
Wenn das Klo besetzt ist ... 573
Das Producer-Consumer-Problem ... 573
Dein Spickzettel ... 579
21. Nimm doch, was andere schon gemacht haben. Die Paketverwaltung NuGet ... 581
Bibliotheken für Code ... 582
Fremden Code aufspüren ... 585
Eigene NuGet-Pakete erstellen ... 588
Pakete statt Projekte ... 591
Die Welt ist schon fertig ... 592
22. Die schönen Seiten des Lebens. Einführung in XAML ... 593
Unendliche Weiten ... 594
Hinzufügen der Komponenten für MAUI-Apps in Visual Studio ... 597
Die MAUI-Architektur ... 598
Diese X-Technologien ... 600
Grundstruktur des Projekts ... 602
Ruf deine Freundin an ... 608
Layouthelferlein ... 612
Tabellen über Tabellen ... 613
Schrödingers Notizen ... 617
Das ist alles eine Stilfrage ... 631
Von der Seite in die Anwendung ... 633
Sonne, Strand und XAML ... 636
23. Models sind doch schön anzusehen. Das Model-View-ViewModel-Entwurfsmuster ... 639
Mein erstes eigenes Model ... 644
Eine Technik, sie alle zu binden! ... 648
Eine Eigenschaft für alle Infos ... 650
Wenn nur jeder wüsste, was er zu tun hätte ... 651
Los geht's! Notify-Everybody ... 654
Ein Laufsteg muss es sein! ... 657
Über Transvestiten und Bindungsprobleme ... 666
Über Bindungsprobleme und deren Lösungen ... 667
Alleine oder zu zweit? ... 668
Aus Klein mach Groß und zurück ... 669
Klein aber fein ... 670
Notizen über Models ... 673
Auf mein Kommando ... 683
Dem Zufall das Kommando überlassen ... 689
MVVM Punkt für Punkt ... 694
24. Weniger ist mehr. MVVM Community Toolkit ... 695
Programmcode generieren lassen ... 696
Lass uns mal rechnen, aber möglichst ohne Aufwand ... 701
Das solltest du trotz Automatik noch wissen ... 710
25. &nb