O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

C# von Kopf bis Fuß, Second Edition

Book Description

Schnappen Sie sich einen Stift, werfen Sie Ihren Rechner an und begeben Sie sich auf eine Erlebnistour durch C#, bei der sowohl Ihre beiden Gehirnhälften als auch Ihre Lachmuskeln stimuliert werden. C# von Kopf bis Fuß ist ein unterhaltsames und visuell ansprechendes Arbeitsbuch für die objektorientierte Programmierung mit C# 4.0 und dem Visual Studio 2010. Behandelt werden alle zentralen Themen, von den Sprachgrundlagen bis zur Garbage Collection, den Erweiterungsmethoden und Animationen mit Double-Buffering. Und Sie lernen auch die Abfrage von Datenquellen mit LINQ kennen. Wenn Sie dieses Buch durchgearbeitet haben, werden Sie ein kompetenter C#-Programmierer sein und umfangreiche Anwendungen entwerfen und programmieren können.

Table of Contents

  1. C# von Kopf bis Fuß
  2. Die Autoren
  3. Über den Übersetzer dieses Buchs
  4. Wie man dieses Buch benutzt: Einführung
    1. Für wen ist dieses Buch?
    2. Wer sollte eher die Finger von diesem Buch lassen?
    3. Wir wissen, was Sie gerade denken
    4. Und wir wissen, was Ihr Gehirn gerade denkt
    5. Metakognition: Nachdenken übers Denken
    6. Das haben WIR getan
    7. Und das können SIE tun, um sich Ihr Gehirn untertan zu machen
    8. Was Sie für dieses Buch brauchen
    9. Lies mich
    10. Die Fachgutachter
    11. Danksagungen
  5. 1. Prduktiv mit C#: Grafische Anwendungen in 10 Minuten und weniger
    1. Warum Sie C# lernen sollten
      1. Das sind die Dinge, die die IDE für Sie automatisiert ...
      2. Was Sie mit Visual Studio und C# erhalten ...
    2. C# und Visual Studio IDE erleichtern Ihnen eine Menge Dinge
    3. Verhelfen Sie Ihrem Chef zu einem papierlosen Büro
    4. Bringen Sie die Bedürfnisse Ihres Kunden in Erfahrung, bevor Sie anfangen, Ihr Programm zu erstellen
    5. Das werden Sie aufbauen
    6. Was Sie in Visual Studio tun ...
    7. Was Visual Studio für Sie macht ...
    8. Die Benutzerschnittstelle entwickeln
    9. Visual Studio hinter den Kulissen
    10. Den automatisch generierten Code ergänzen
    11. Sie können Ihre Anwendung bereits ausführen
    12. Wo sind meine Dateien?
    13. Das haben wir bisher gemacht
    14. Wir brauchen eine Datenbank zur Speicherung der Informationen
    15. Die IDE hat eine Datenbank erstellt
    16. SQL ist eine eigene Sprache
    17. Die Tabelle für die Kontaktliste erstellen
    18. Die Felder auf einer Adresskarte sind die Spalten in der Tabelle Personen
    19. Den Tabellenbau abschließen
    20. Ihre Kartendaten in die Datenbank einfügen
    21. Ihr Formular über eine Datenquelle mit Ihren Datenobjekten verbinden
    22. Dem Formular datenbankgesteuerte Steuerelemente hinzufügen
    23. Gute Programme sind intuitiv zu verwenden
    24. Testlauf
      1. Die IDE erstellt das Programm und führt es dann aus
    25. Wie Sie IHRE Anwendung in eine Anwendung für ALLE verwandeln
    26. Ihren Nutzern die Anwendung geben
    27. Sie sind noch NICHT fertig: Testen Sie Ihre Anwendung
    28. Sie haben eine vollständige, datengesteuerte Anwendung erstellt
  6. 2. Es ist alles blß Cde: Unter der Motorhaube
    1. Wenn Sie das tun ...
    2. ... macht die IDE das
    3. Wo die Programme herkommen
      1. Jedes Programm beginnt als Sammlung von Quellcodedateien
      2. Das .NET Framework gibt Ihnen die erforderlichen Werkzeuge
      3. Erstellen Sie das Programm, um eine ausführbare Programmdatei zu erzeugen
      4. Ihr Programm läuft in der CLR
    4. Die IDE hilft Ihnen beim Programmieren
    5. Wenn Sie Dinge in der IDE ändern, ändern Sie auch Ihren Code
      1. Halt, halt! Was soll das heißen?
    6. Anatomie eines Programms
      1. Schauen wir uns Ihren Code genauer an
    7. Ihr Programm weiß, wo es anfangen muss
    8. Sie können den Einstiegspunkt Ihres Programms ändern
      1. Und was ist passiert?
    9. Zwei Klassen können im gleichen Namensraum sein
    10. Ihre Programme nutzen Variablen, um mit Daten zu arbeiten
      1. Variablen deklarieren
      2. Variablen variieren
      3. Sie müssen Variablen Werte zuweisen, bevor Sie sie verwenden
      4. Ein paar nützliche Typen
    11. C# nutzt vertraute mathematische Symbole
    12. Mit dem Debugger Variablen beobachten
    13. Mit Schleifen Aktionen wiederholen
      1. Nutzen Sie eine Codeschablone, um einfache for-Schleifen zu schreiben
    14. Zeit, mit dem Programmieren zu beginnen
      1. Fügen Sie Anweisungen zur Anzeige einer Meldung hinzu
    15. if/else-Anweisungen fällen Entscheidungen
    16. Bedingungen aufstellen und prüfen
      1. Prüfen Sie Bedingungen mit logischen Operatoren
      2. Eine Variable setzen und ihren Wert prüfen
      3. Noch eine Testbedingung
      4. Fügen Sie Ihrem Programm Schleifen hinzu
  7. 3. Objekte: Orientieren Sie sich!: Aufgabenspezifischer Code
    1. Wie Mark über sein Problem nachdenkt
    2. Wie Marks Navi über das Problem nachdenkt
    3. Die Methoden von Marks Navigator-Klasse
      1. Manche Methoden haben Rückgabewerte
    4. Nutzen Sie das Gelernte, um eine einfache Anwendung zu erstellen
    5. Was wir damit erreicht haben
    6. Mark hat eine Idee
      1. Er könnte drei verschiedene Navigator-Klassen erstellen ...
    7. Mark kann sein Problem mit Objekten lösen
    8. Sie nutzen eine Klasse, um ein Objekt zu erstellen
      1. Ein Objekt erhält seine Methoden von seiner Klasse
    9. Wenn Sie ein neues Objekt einer Klasse erstellen, bezeichnet man dieses als Instanz der Klasse
    10. Eine bessere Lösung ... dank Objekten!
      1. Theorie und Praxis
      2. Ein kleiner Tipp für die Codeübungen
    11. Eine Instanz nutzt Felder, um Dinge festzuhalten
      1. Methoden sind das, was ein Objekt macht. Felder sind das, was das Objekt weiß.
    12. Erstellen wir mal ein paar Instanzen!
    13. Objekte auf dem Speicher
      1. Sehen wir uns genauer an, was hier passiert ist:
    14. Was Ihr Programm im Kopf hat
    15. Sie können Klassen- und Methodennamen verwenden, um Ihren Code intuitiv zu machen
    16. Geben Sie Ihren Klassen eine natürliche Struktur
      1. Erstellen wir ein Klassendiagramm
    17. Klassendiagramme helfen Ihnen, Ihre Klassen auf sinnvolle Weise zu organisieren
    18. Eine Klasse für die Arbeit mit ein paar Typen erstellen
    19. Ein Projekt für die Jungs erstellen
    20. Erstellen Sie ein Formular zur Interaktion mit den Jungs
    21. Die Objektinitialisierung kann noch einfacher sein
  8. 4. Typen und Referenzen: Es ist 10:00. Wissen Sie, wo Ihre Daten sind?
    1. Der Typ einer Variablen bestimmt, welche Art Daten sie speichern kann
    2. Eine Variable ist wie ein Daten-to-go-Becher
    3. 10 Kilo Daten in einem 5-Kilo-Sack
    4. Auch eine Zahl der richtigen Größe können Sie nicht einfach irgendeiner Variablen zuweisen
      1. Was ist passiert?
    5. Wandeln Sie einen zu großen Wert um, passt C# ihn automatisch an
    6. Einige Umwandlungen macht C# automatisch
    7. Beim Aufruf einer Methode müssen die Variablen den Typen der Parameter entsprechen
    8. Einen Operator mit = kombinieren
    9. Auch für Objekte braucht man Variablen
    10. Mit Referenzvariablen auf Objekte verweisen
    11. Referenzen sind wie Etiketten für Ihr Objekt
    12. Gibt es keine Referenzen mehr, holt die Müllabfuhr Ihr Objekt
    13. Mehrere Referenzen und ihre Nebenwirkungen
    14. Zwei Referenzen bedeuten ZWEI Möglichkeiten, die Daten eines Objekts zu ändern
    15. Ein Sonderfall: Arrays
      1. Nutzen Sie die Elemente in einem Array, als wären es gewöhnliche Variablen
    16. Arrays können auch einen Haufen Referenzvariablen speichern
    17. Willkommen beim Sandwich-Discount vom Strammen Max
    18. Objekte nutzen Referenzen, um zu kommunizieren
    19. Wohin noch kein Objekt gekommen ist
    20. Erstellen Sie ein Tippspiel
  9. I. C#-Workshop: Ein Tag beim Rennen
    1. 5. Kapselung: Alles zu zeigen, ist nicht immer richtig
      1. Kathrin ist Event-Managerin
      2. Was der Kostenrechner macht
      3. Kathrins Testlauf
      4. Jede Option sollte einzeln berechnet werden
      5. Objekte werden leicht unabsichtlich missbraucht
      6. Kapselung bedeutet, dass man einige Daten in einer Klasse privat hält
      7. Nutzen Sie Kapselung, um den Zugriff auf die Methoden und Felder Ihrer Klassen zu steuern
      8. Aber ist das Feld WahrerName WIRKLICH geschützt?
      9. Auf private Felder und Methoden kann nur aus der Klasse selbst heraus zugegriffen werden
        1. Kapselung macht Ihre Klassen ...
        2. Marks Anwendung mangelt es an Kapselung
        3. Betrachten Sie Objekte als undurchsichtig
      10. Kapselung hält Ihre Daten rein
        1. Ein kurzes Kapselungsbeispiel
      11. Eigenschaften vereinfachen die Kapselung
      12. Eine Anwendung zum Testen der Klasse Bauer erstellen
      13. Automatische Eigenschaften
        1. Die Klasse Bauer vollständig kapseln
      14. Was ist, wenn wir den FutterMultiplikator ändern möchten?
      15. Initialisieren Sie private Felder mit einem Konstruktor
    2. 6. Vererbung: Der Stammbaum Ihres Objekts
      1. Kathrin plant auch Geburtstagsfeiern
      2. Wir brauchen eine Geburtstagsfeier-Klasse
        1. Das müssen wir tun:
      3. Party-Planer 2.0
      4. Eine Sache noch ... können Sie eine Gebühr von 100 € für Partys mit mehr als 12 Personen hinzufügen?
      5. Nutzen Ihre Klassen Vererbung, müssen Sie Ihren Code nur einmal schreiben
        1. Abendessen und Geburtstagsfeiern sind beides Partys
      6. Erstellen Sie Ihr Klassenmodell, indem Sie allgemein beginnen und immer spezifischer werden
      7. Wie würden Sie einen Zoo-Simulator entwerfen?
      8. Nutzen Sie Vererbung, um doppelten Code in Unterklassen zu vermeiden
      9. Unterschiedliche Tiere machen unterschiedliche Geräusche
        1. Überlegen Sie, was Sie überschreiben müssen
      10. Denken Sie daran, wie die Tiere gruppiert sind
      11. Die Klassenhierarchie erstellen
      12. Jede Unterklasse erweitert Ihre Basisklasse
        1. C# ruft immer die spezifischste Methode auf
      13. Erweiterung geben Sie mit einem Doppelpunkt an
      14. Wir wissen, dass Vererbung die Felder, Eigenschaften und Methoden der Basisklasse den Unterklassen hinzufügt ...
        1. ... aber manche Vögel fliegen nicht!
      15. Eine Unterklasse kann Methoden überschreiben, um geerbte Methoden zu ändern oder zu ersetzen
      16. Überall dort, wo Sie die Basisklasse verwenden können, können Sie stattdessen ein Unterklasse verwenden
      17. Unterklassen können Oberklassenmethoden ausblenden
        1. Methoden ausblenden vs. Methoden überschreiben
        2. Nutzen Sie unterschiedliche Referenzen, um verborgene Methoden aufzurufen
        3. Nutzen Sie das Schlüsselwort new, wenn Sie Methoden ausblenden
      18. Nutzen Sie override und virtual, um Verhalten zu ändern
      19. Basisklassenzugriff über das Schlüsselwort base
      20. Hat die Basisklasse einen Konstruktor, braucht ihn die Unterklasse auch
        1. Der Basisklassenkonstruktor wird vor dem Unterklassenkonstruktor ausgeführt
      21. Jetzt können Sie die Arbeit für Kathrin abschließen!
      22. Bauen Sie eine Bienenstockverwaltung
      23. Erst bauen Sie das Grundsystem
      24. Erweitern Sie die Bienenverwaltung mit Vererbung
    3. 7. Schnittstellen und abstrakte Klassen: Klassen, die Versprechen halten
      1. Kehren wir zu den Bienen zurück
        1. Viele Dinge bleiben gleich
      2. Mit Vererbung können wir Klassen für die unterschiedlichen Arten von Bienen erstellen
      3. Eine Schnittstelle sagt einer Klasse, dass sie bestimmte Methoden und Eigenschaften implementieren muss
      4. Schnittstellen definieren Sie mit dem Schlüsselwort interface
      5. NektarWache macht beides
      6. Klassen, die Schnittstellen implementieren, müssen ALLE Methoden der Schnittstelle einschließen
      7. Sammeln Sie Erfahrung im Umgang mit Schnittstellen
      8. Eine Schnittstelle können Sie nicht instantiieren, aber Sie können sie referenzieren
      9. Schnittstellenreferenzen funktionieren wie Objektreferenzen
      10. Mit »is« können Sie ermitteln, ob eine Klasse eine bestimmte Schnittstelle implementiert
      11. Eine Schnittstelle kann von einer anderen erben
        1. Klassen, die Schnittstellen implementieren, die von IArbeiterin erben, müssen die Methoden und Eigenschaften von IArbeiterin implementieren
      12. Eine RoboBiene kann die Arbeit von Arbeiterinnen erledigen und braucht keinen Honig
      13. is sagt, welchen Typ Ihr Objekt hat, as sagt dem Compiler, wie er es behandeln soll
      14. Eine KaffeeMaschine ist auch ein Gerät
      15. Umwandeln funktioniert mit Objekten und Schnittstellen
      16. Mit Downcasting können Sie Ihr Gerät wieder zu einer Kaffeemaschine machen
        1. Scheitert das Downcasting, liefert as null
      17. Upcasting und Downcasting funktionieren auch mit Schnittstellen
      18. Es gibt nicht nur public und private
      19. Zugriffsmodifizierer ändern die Sichtbarkeit
      20. Manche Klassen sollten nicht instantiiert werden
      21. Eine abstrakte Klasse ist vergleichbar mit einer Kreuzung aus normaler Klasse und Schnittstelle
      22. Manche Klassen sollten nicht instantiiert werden
        1. Lösung: Nutzen Sie eine abstrakte Klasse!
      23. Eine abstrakte Methode hat keinen Rumpf
      24. Der Deadly Diamnd f Death!
        1. Mehrdeutigkeiten vermeiden!
        2. Die vier Prinzipien der objektorientierten Programmierung
      25. Polymorphie bedeutet, dass ein Objekt viele verschiedene Formen annehmen kann
        1. Achten Sie in der nächsten Übung auf Polymorphie!
    4. 8. Enums und Auflistungen: Daten in Massen speichern
      1. Gelegentlich sind Strings nicht gut genug, wenn es darum geht, Kategorien von Daten zu speichern
      2. Mit Enumerationen können Sie erlaubte Werte aufzählen
      3. Mit Enums können Zahlen über Namen repräsentiert werden
      4. Wir könnten einen Kartenstapel über ein Array repräsentieren
        1. ... aber was ist, wenn Sie mehr machen möchten?
      5. Die Arbeit mit Arrays ist nicht immer einfach
      6. Listen erleichtern das Speichern von Sammlungen ... jeder Art
      7. Listen sind flexibler als Arrays
      8. Listen schrumpfen und wachsen dynamisch
      9. Generische Auflistungen können beliebige Typen speichern
      10. Auflistungsinitialisierer funktionieren wie Objektinitialisierer
      11. Erstellen wir eine Liste mit Enten
        1. Hier ist der Initialisierer
      12. Listen sind leicht, aber SORTIEREN kann verzwickt sein
        1. Listen wissen, wie sie sich sortieren müssen
      13. Enten sortieren mit IComparable<Ente>
        1. CompareTo() vergleicht das Objekts mit einem anderen
      14. Mit IComparer sagen Sie Ihren Listen, wie sie sortieren sollen
      15. Erstellen Sie eine Instanz Ihrer Comparer-Klasse
        1. Mehrere IComparer-Implementierungen bedeuten mehrere Wege, Ihre Objekte zu sortieren
      16. Komplexe IComparer
      17. Die ToString()-Methode von Objekten überschreiben
      18. foreach aktualisieren, damit sich Enten und Karten selbst darstellen
        1. Der Klasse Karte eine ToString()-Methode geben
      19. Über IEnumerable ganze Listen upcasten
        1. Vögel zu einer einzigen Liste kombinieren
      20. Auch Sie können Methoden überladen
      21. Schlüssel und Werte speichern Sie in Wörterbüchern
      22. Die Dictionary-Funktionalität im Überblick
        1. Schlüssel und Wert können unterschiedliche Typen haben
      23. Ein Programm mit einem Wörterbuch erstellen
      24. Noch MEHR Auflistungstypen ...
        1. Generische Auflistungen sind ein wichtiger Teil des .NET Framework
      25. Eine Queue ist FIFO – First-in-First-out
      26. Ein Stack ist LIFO – Last-in-First-out
  10. II. C#-Workshop: Die Suche
    1. 9. Dateien lesen und schreiben: Speichere das Array, rette die Welt
      1. C# nutzt Streams, um Daten zu lesen und zu schreiben
      2. Verschiedene Streams lesen und schreiben verschiedene Dinge
        1. Was Sie mit einem Stream machen können:
      3. Ein FileStream schreibt Bytes in eine Datei
      4. Wie man Daten in eine Textdatei schreibt
      5. Der nächste teuflische Plan des Fieslings
      6. Lesen und Schreiben mit zwei Objekten
      7. Daten können durch mehrere Streams laufen
      8. Öffnen Sie mit eingebauten Objekten Standarddialoge
        1. ShowDialog() öffnet einen Dialog
      9. Dialoge sind einfach ein weiteres .NET-Steuerelement
      10. Dialoge sind auch Objekte
      11. Mit den eingebauten Klassen File und Directory können Sie mit Dateien und Verzeichnissen arbeiten
        1. Dinge, die Sie mit einem File-Objekt tun können:
        2. Dinge, die Sie mit einem Verzeichnis tun können:
      12. Dateien mit vorgefertigten Dialogen öffnen und speichern
      13. IDisposable sorgt dafür, dass Ihre Objekte entsorgt werden
      14. Vermeiden Sie Dateisystemfehler mit using-Anweisungen
        1. Mehrere Objekte brauchen mehrere using-Anweisungen
      15. Ärger im Büro
        1. Können Sie Brian mit einem Programm helfen, das für ihn seine Entschuldigungen verwaltet?
      16. Beim Schreiben von Dateien muss man in der Regel viele Entscheidungen treffen
      17. Wählen Sie Ihre Optionen mit einer switch-Anweisung
      18. Schreiben und lesen Sie mit switch Ihre Spielkarten in eine bzw. aus einer Datei
      19. Ein überladener Kartenstapel()-Konstruktor, der einen Kartenstapel aus einer Datei einliest
        1. Was bei der Serialisierung eines Objekts passiert
        2. Aber was genau IST der Zustand eines Objekts? Was muss gespeichert werden?
      20. Wird ein Objekt serialisiert, werden die Objekte, die es referenziert, ebenfalls serialisiert ...
      21. Mit Serialisierung können Sie ein ganzes Objekt auf einmal lesen oder schreiben
        1. Sie brauchen ein BinaryFormatter-Objekt
        2. Erstellen Sie jetzt einen Stream zum Schreiben und Lesen
        3. Soll eine Klasse serialisierbar sein, müssen Sie sie mit dem Attribut [Serializable] markieren
      22. Serialisieren und deserialisieren wir einen Kartenstapel
      23. .NET speichert Text in Unicode
      24. Mit byte-Arrays können Daten verschoben werden
      25. Binäre Daten schreiben Sie mit einem BinaryWriter
        1. Lesen Sie die Daten mit BinaryReader wieder ein
      26. Sie können serialisierte Dateien auch manuell lesen und schreiben
      27. Die Dateien an den Punkten ändern, an denen sie sich unterscheiden
      28. Die Arbeit mit Binärdateien kann kompliziert sein
      29. Mit Datei-Streams ein Hex-Dump-Programm erstellen
        1. Wie man einen Hex-Dump erstellt
        2. Mit Hex-Zahlen arbeiten
      30. StreamReader und StreamWriter reichen vollkommen aus
      31. Mit Stream.Read() Bytes aus einem Stream lesen
    2. 10. Exceptin-Handling: Fehler-Prävention
      1. Brians Entschuldigungen müssen mobil werden
        1. Aber das Programm funktioniert nicht
      2. Löst Ihr Programm eine Exception aus, erzeugt .NET ein Exception-Objekt
      3. Brians Code machte etwas Unerwartetes
      4. Alle Exception-Objekte erben von Exception
      5. Der Debugger hilft Ihnen, Exceptions in Ihrem Code aufzuspüren und zu verhindern
        1. Der Expertenmodus bietet eine größere Debug-Werkzeugleiste
        2. Hex-Modus umschalten
      6. Nehmen Sie den Debugger, um herauszufinden, was genau das Problem in der Entschuldigungsverwaltung ist
      7. Och nee, der Code hat immer noch Probleme
      8. Exceptions mit try und catch behandeln
      9. Was passiert, wenn eine Methode gefährlich ist?
      10. Folgen Sie try/catch mit dem Debugger
      11. Nutzen Sie finally, wenn Sie Code haben, der IMMER ausgeführt werden soll
      12. Nutzen Sie das Exception-Objekt, um Informationen zum Problem zu erhalten
      13. Mehrere Typen von Exceptions mit mehreren Catch-Blöcken abfangen
      14. Eine Klasse löst eine Exception aus, eine andere fängt sie ab
      15. Bienen brauchen eine HonigLeerException
      16. Ein einfaches Mittel, um viele Probleme zu vermeiden: using gibt Ihnen try und finally kostenlos
      17. Exception-Vorsorge: Implementieren Sie IDisposable für eigene Aufräumarbeiten
      18. Der SCHLIMMSTE catch-Block: Kommentare
        1. Sie sollten Exceptions behandeln, nicht vergraben
      19. Vorübergehende Lösungen sind okay (vorübergehend)
      20. Einige einfache Gedanken zum Exception-Handling
      21. finally verschafft Brian seinen Urlaub ...
        1. ... und auch im Büro sieht alles gut aus!
    3. 11. Events und Delegates: Was Ihr Code macht, wenn Sie nicht gucken
      1. Möchten auch Sie, dass Ihre Objekte für sich selbst denken?
      2. Aber woher weiß ein Objekt, dass es reagieren soll?
      3. Wenn Events eintreten ... lauschen Objekte
        1. Sie wollen ETWAS mit einem Event TUN? Dann brauchen Sie einen Event-Handler!
      4. Ein Objekt setzt ein Event ab, andere lauschen darauf ...
      5. Dann behandeln andere Objekte das Event
      6. Die Punkte verbinden
        1. Nutzen Sie Standardnamen für Methoden zum Absetzen von Events
      7. Die IDE erzeugt Event-Handler automatisch
      8. Mit generischen Event-Handlern eigene Event-Typen definieren
        1. Nutzen Sie implizite Umwandlung, indem Sie new und den Event-Typ weglassen
      9. Alle Formulare, die Sie bisher erstellt haben, nutzen Events
        1. Ein Event, viele Handler
      10. Event-Sender mit Event-Empfängern verbinden
        1. »Wir werden uns mit Ihnen in Verbindung setzen.«
      11. Ein Delegate VERTRITT die eigentliche Methode
        1. Ein Delegate fügt Ihrem Projekt einen neuen Typ hinzu
      12. Delegates in Aktion
      13. Jedes Objekt kann ein öffentliches Event abonnieren ...
        1. ... aber das ist nicht immer richtig!
      14. Nutzen Sie Callbacks statt Events, um genau ein Objekt mit einem Delegate zu verbinden
      15. Callbacks nutzen Delegates, aber KEINE Events
    4. 12. Rückblick und Vrschau: Wissen, Macht und cooles Zeug erstellen
      1. Du hast einen langen Weg hinter dir, Baby
      2. Wir sind Imker geworden
        1. Aber jetzt können wir das viel besser machen ...
      3. Die Architektur des Bienenstock-Simulators
      4. Den Bienenstock-Simulator erstellen
      5. Leben und Sterben einer Blume
      6. Nun brauchen wir die Klasse Biene
      7. Geben wir den Bienen ein Zuhause
      8. Der Stock läuft mit Honig
      9. Die Klasse Stock ergänzen
      10. Die Laufen()-Methode des Stocks
      11. Wir sind bereit für die Welt
        1. Das Welt-Objekt hält alles am Laufen()
      12. Wir bauen ein rundenbasiertes System
      13. Hier ist der Code für Welt
      14. Den Bienen ein Verhalten geben
      15. Das Hauptformular bringt die Welt ans Laufen()
      16. Wir können die Welt nutzen, um Informationen zu erhalten
      17. Timer lösen Events immer wieder aus
        1. Im Hintergrund nutzt Timer einen Event-Hander
        2. Geben Sie dem Simulator einen Timer
        3. Testlauf
      18. Arbeiten wir mit Gruppen von Bienen
      19. Eine Auflistung sammelt ... DATEN
      20. LINQ vereinfacht die Arbeit mit den Daten in Auflistungen und Datenbanken
      21. Testlauf (Teil 2)
      22. Eine letzte Herausforderung: Öffnen und Speichern
    5. 13. Steuerelemente und Grafik: Machen Sie es ansehnlich
      1. Sie haben die ganze Zeit Steuerelemente für die Interaktion mit Ihren Programmen verwendet
      2. Formular-Steuerelemente sind auch nur Objekte
      3. Den Bienenstock-Simulator mit Steuerelementen animieren
      4. Ein Renderer für Ihre Architektur
      5. Der Renderer zeichnet alles in der Welt in den beiden Formularen
        1. Der Simulator zeichnet die Welt nach jedem Frame
      6. Controls sind für grafisch angezeigte Elemente gut geeignet
      7. Ihr erstes animiertes Steuerelement erstellen
        1. Wir möchten ein Control in der Toolbox
      8. BienenControl ist WIE eine PictureBox ... beginnen wir also damit, PictureBox zu ERWEITERN
      9. Fügen Sie einem Formular das BienenControl über einen Button hinzu
      10. Ihre Steuerelemente müssen dispose() anbieten
      11. Mit UserControl können Steuerelemente leicht erstellt werden
      12. Der Renderer nutzt Ihr BienenControl, um animierte Bienen auf Ihre Formulare zu zeichnen
      13. Fügen Sie dem Projekt die neuen Formulare hinzu
        1. Die Orte ermitteln
      14. Den Renderer erstellen
      15. Das Hauptformular mit den beiden neuen Formularen verbinden
      16. Testlauf ... nein, Testflug
      17. Sieht toll aus, aber ein paar kleine Haken gibt’s noch
      18. Schauen wir uns zunächst die Leistungsprobleme an
      19. Bitmaps skalieren Sie über ein Graphics-Objekt
        1. Schauen wir uns das Skalieren im Einsatz an
      20. Ihre Grafikressourcen werden als Bitmap-Objekt gespeichert
        1. Dann werden die Bitmaps auf dem Bildschirm gezeichnet
        2. Je größer sie sind ...
      21. Nutzen Sie System.Drawing, um Ihre Grafiken SELBST zu STEUERN
      22. Ein GDI+-Schnellkurs
      23. Mit Graphics ein Bild auf ein Formular zeichnen
      24. Graphics kann unser Transparenzproblem lösen
        1. ... aber es gibt ein Problem
      25. Paint macht Ihre Zeichnungen dauerhaft
      26. Das Neuzeichnen von Formularen und Steuerelementen aus der Nähe betrachtet
      27. Double-Buffering macht Ihre Animation glatter
      28. Double-Buffering ist in Formulare und Steuerelemente eingebaut
        1. Überarbeiten Sie den Bienenstock-Simulator
      29. Mit einem Graphics-Objekt und einem Event-Handler drucken
      30. PrintDocument nutzt den Drucken-Dialog und die Druckvorschau
        1. Mehrseitige Dokumente drucken Sie mit e.HasMorePages
    6. 14. Captain Amazing: Der Tod Des Objekts
      1. Ihre letzte Chance, etwas zu TUN ... der Destruktor Ihres Objekts
      2. Wann GENAU läuft ein Destruktor?
        1. Sie können .NET VORSCHLAGEN, dass es Zeit ist, den Müll einzusammeln
      3. Dispose() arbeitet mit using, Destruktoren mit der Garbage Collection
      4. Destruktoren können von der Stabilität abhängen
      5. Lassen Sie ein Objekt sich selbst in Dispose() serialisieren
      6. Ein Struct sieht aus wie ein Objekt ...
      7. ... ist aber nicht auf dem Heap
      8. Werte werden kopiert, Referenzen werden zugewiesen
      9. Structs sind Werttypen, Objekte sind Referenztypen
      10. Stack vs. Heap: mehr zum Speicher
      11. Mit Parametern Methoden mehrere Werte liefern lassen
      12. Mit dem Modifizierer ref Referenzen übergeben
      13. Mit optionalen Parametern Standardwerte setzen
      14. Nullbare Typen vertreten nicht existierende Werte
      15. Nullbare Typen machen Programme robuster
      16. Captain Amazing ... nicht ganz
      17. Erweiterungsmethoden fügen BESTEHENDEN Klassen neue Verhalten hinzu
      18. Einen elementaren Typ erweitern: string
      19. Erweiterungs-Magneten
      20. Erweiterungs-Magneten, Lösung
    7. 15. LINQ: Bekommen Sie Ihre Daten in den Griff
      1. Ein leichtes Projekt ...
      2. ... aber die Daten sind völlig zerstreut
      3. LINQ kann Daten aus mehreren Quellen ziehen
      4. .NET-Auflistungen sind bereits für LINQ eingerichtet
      5. LINQ vereinfacht Abfragen
      6. LINQ ist einfach, Ihre Abfragen sind das nicht immer
      7. LINQ ist vielseitig
      8. LINQ kann Ergebnisse zu Gruppen zusammenfassen
      9. Tims Werte gruppieren
      10. Zwei Auflistungen in einer Abfrage mit join kombinieren
      11. Tim hat eine Menge Kohle gespart
      12. LINQ mit einer SQL-Datenbank verbinden
      13. Fragen Sie Sternback und die Papierfabrik mit einem Join ab
  11. III. C#-Workshop: Invaders
    1. A. Was übrig bleibt: Die Top 11 der Themen, die es nicht ins Buch geschafft haben
      1. 1. Die Grundlagen
        1. Weitere Grundlagen ...
      2. #2. Namensräume und Assemblies
        1. ... was also haben wir da gemacht?
        2. Warum public bei den Klassendeklarationen in Kapitel 13
      3. 3. Mit BackgroundWorker das UI reaktiver machen
      4. 4. Die Klasse Type und GetType()
      5. 5. Gleichheit, IEquatable und Equals()
      6. 6. Mit yield return enumerierbare Objekte erzeugen
      7. 7. Umgestalten (Refactoring)
        1. Eine Methode extrahieren
        2. Eine Variable umbenennen
        3. Eine Testbedingung konsolidieren
      8. 8. Anonyme Typen und Methoden sowie Lambda-Ausdrücke
      9. 9. Daten mit DataContractSerializer serialisieren
      10. 10. LINQ to XML
        1. XML-Dateien laden und speichern
        2. Ihre Daten abfragen
        3. Daten aus einem RSS-Feed lesen
      11. 11. Windows Presentation Foundation
      12. Wussten Sie, dass Sie mit C# und dem .NET Framework ...
  12. Stichwortverzeichnis