Click here to load reader
View
213
Download
0
Embed Size (px)
Dirk Louis, Shinja Strasser, Thorsten Kansy
MicrosoftVisual C# 2010 -Das Entwicklerbuch
MicrosoftPress
InhaltsverzeichnisEinleitung 27
Zielgruppe 28Aufbau des Buchs 28Die Beispielsammlung zu diesem Buch 29Die Visual Studio 2010-Edition auf der beiliegenden Buch-DVD 29Korrekturen und Kommentare 30
Teil A - Einfhrung in .NET 4.0 und Visual C# 2010 31
1 Das .NET Framework 33Historie 34Bausteine des .NET Framework 35
Common Language Infrastructure 35Common Language Runtime 35Common Intermediate Language 36Just-In-Time-Compiler 37
Assemblys 38Ausfhrungsmodell fr Assemblys 40
2 Visual Studio 2010 und Visual C# 2010 43Visual Studio 44
Geschichte 44Visual Studio 2010, .NET Framework 4.0 und C# 4.0 45Arbeiten in der Entwicklungsumgebung 45
Die Projektverwaltung 52bersicht 52Projektmappen 53Stertprojekte, Verweise und Projektabhngigkeiten 57Eigene Projektvorlagen 59
Der Code-Editor 59Kleine Annehmlichkeiten 60IntelliSense 61using-Smarttag 63Umschlieung 64Codeausschnitte 64Umgestaltung 66
Inhaltsverzeichnis
Erstellung 68MSBuild 68Build-Konfigurationen 69
Konfiguration 70Umgebungseinstellungen 70Extras/Optionen 70Externe Tools einrichten 72
Fensterverwaltung 73Die Andock-Hilfe 73Die Pin-Nadel 74Der IDE-Navigator 74
Navigation 75Suchen 75Zur Definition wechseln 77Klassenansicht und Objektkatalog 77Aufrufhierarchie 77
Hilfe 78bersicht 78Lokal oder Online 79Die Online-Hilfe 80Die lokale Hilfe 82
3 Die ersten Programme 85Konsolenanwendungen 86Windows Forms-Anwendungen 89
4 Stilkonventionen 93Bezeichner 94Konventionen 95Blcke 97
Teil B - C#-Grundlagen 99
5 Anatomie eines C#-Programms 101Programmaufbau 102
Klassen 103Eintrittspunkt Main() 104
using-Direktive und Framework-Klassen 106Ein- und Ausgabe 106Kommentare 108
Dateien und Assemblys 109Klassen und Dateien 109Dateien und Assemblys 110
Inhaltsverzeichnis . 7
Imperative Programmierung in C# 112Daten und Datentypen 112Literale und Variablen 112Operatoren und Ausdrcke 113Anweisungen 113Funktionen (Methoden) 115
Objektorientierte Programmierung in C# 116Wie sind OOP-Objekte beschaffen? 117Objekte und Klassen 118Die Klasse als Zentrum der objektorientierten Programmierung 121Konzepte, die auf der Klasse aufbauen 125Die Klasse als Funktionensammlung 130
6 Variablen, Daten und Typen 131Das C#-Datenmodell 132
Datenreprsentation 132Typisierung 132Wert- und Verweistypen 133Erweiterbarkeit 136
Literale 136Variablen 139
Definition 139Initialisierung 140Eindeutige Zuweisung 141Gltigkeitsbereiche 142
Konstanten 142Typen: Primitive Typen 143
Derbool-Typ 144Ganzzahlige Typen 145Gleitkommatypen 147Zeichen 149Der decimal-Typ 150
Typen: Definierbare Typen 150Typen: Strings 152Typumwandlung und Boxing 153
Implizite Typumwandlungen 153Explizite Typumwandlungen 154Boxing und Unboxing 155
7 Operatoren und Ausdrcke 157Operatoren und Ausdrcke 158
Klassifizierung nach Operanden 158Ausdrcke 159
Inhaltsverzeichnis
Auswertungsreihenfolge 159Vorrang der Operatoren 160Assoziativitt der Operatoren 161Operanden 162Klammerung 162
Nebeneffekte und andere Fallstricke 162Die arithmetischen Operatoren 165
Division und Modulo 165Inkrement und Dekrement 166
Die Zuweisungsoperatoren 167Die relationalen Operatoren 168Die logischen Operatoren 169Die Bit-Operatoren 172Die Operatoren fr die Typidentifizierung und -Umwandlung 175
Typidentifizierung 175Typumwandlung 177
Sonstige Operatoren 178Datenzugriff 178
checked und unchecked 179Der new-Operator 179Der Bedingungsoperator ?: 179Der ??-Operator 180Operatoren fr nicht gesicherten Code 180
8 Ablaufsteuerung 181Verzweigungen 182
Die einfache if-Anweisung 182Die if...eise-Verzweigung 184iL.else-Ketten und -Verschachtelungen 185Die switch-Verzweigung 187
Schleifen 190Die while-Schleife 191Die do...while-Schleife 193Die for-Schleife 195Die foreach-Schleife fr Arrays und Auflistungen 196
Sprunganweisungen 197Die continue-An Weisung 198Die break-Anweisung 198Die goto-Anweisung 199
9 Arrays, Enumerationen und Strukturen 201Arrays 202
Definition und Erzeugung 202Initialisierungslisten 205
Inhaltsverzeichnis .
System. Array 205Mehrdimensionale Arrays 214Arrays von Arrays 218
Enumerationen 220Definition 220Verwendung 221Enumerationen und switch 222Die Klasse System.Enum 223
Strukturen 224Definition 224Verwendung 225Unterschiede zwischen Strukturen und Klassen 226
Teil C - Objektorientierte Programmierung in C# 227
10 Klassen 229Die Klassendefinition 230
Zugriff auf Klasse steuern 231Zugriff auf Member steuern 231Spezielle Klassen 233Partielle Klassen 234
Konstanten 235Felder 236
Definition 236Instanzfelder 237Statische Felder 238
Methoden 242Allgemeines 242Instanzmethoden und this 245Statische Methoden 247Datenaustausch 248Rekursion 256berladung 257
Eigenschaften 260Konstruktoren 264
Klassen ohne selbst definierten Konstruktor 266Der Standardkonstruktor 266berladene Konstruktoren 266Statische Konstruktoren 267
Destruktoren 269Aufruf 269Eigener Destruktor 270
Verschachtelte Typdefinitionen 272
10 Inhaltsverzeichnis
11 Schnittstellen 275Vertragsbasierte Programmierung 276
Modell 1: schnittstellengesttzte Methoden 277Modell 2: Schnittstellen als Labels fr Klassen 278
Schnittstellen definieren 279Schnittstellen-Member 280Schnittstellenvererbung 280
Schnittstellen implementieren 281Die Dokumentation ist wichtig (IComparable-Beispiel) 282Schnittstellen-Member verbergen 284
Namenskonflikte in Schnittstellen lsen 286
12 Vererbung, Polymorphie und Klassen-Design 289Vererbung 290
Das Prinzip der Vererbung 290Geerbte Member 294Die oberste Basisklasse Object 304Vererbung ber Assembly- und Sprachgrenzen hinweg 305
Polymorphie 309Grundprinzip und Implementierung 309Dynamische und statische Bindung 312Generische Programmierung 319Typidentifizierung zur Laufzeit 324Abstrakte Klassen 326
Der Klassen-Designer 328Klassendiagramme erzeugen 328Klassendiagramme bearbeiten 329Projektdokumentationen erstellen 332Analysespezifikationen umsetzen 332Projekte pflegen 333
13 Indexer, Enumeratoren und Iteratoren 335Indexer 336
Syntax 336Beispiel 337
Enumeratoren 338Funktionsweise 339Implementierung 340
Iteratoren 345foreach-Untersttzung durch Iteratoren 345Klassen mit mehreren (benannten) Iteratoren 347Eigene Lsungen, die auf IEnumerable basieren 348
Inhaltsverzeichnis . . .11
14 Operatorenberladung 351Syntax 352Regeln 353
berladbare Operatoren 353Regeln fr die berladung 354
Fallbeispiel: Unre Inkrement- und Dekrement-Operatoren 355Fallbeispiel: Binre mathematische Operatoren 355Fallbeispiel: Relationale Operatoren 357Fallbeispiel: Konvertierungsoperatoren 359Fallbeispiel: true und false 360
15 Ausnahmebehandlung 361Konzeption und Zielsetzung 362
Kein Weg zurck 364Behandeln von Ausnahmen 364
Das try...catch-Grundgerst 365Ausnahmen abfangen 365Mehrere catch-Handler 367Ausnahmen als Informationstrger 369
Die finally-Klausel 369finally-Block 369using-Anweisung 371Ausnahmen auslsen 372
Ausnahmen weiterleiten 372Innere Ausnahmen 372
Die vordefinierten Ausnahmeklassen 373Member der Klasse Exception 374CLR-generierte Ausnahmen 375
Eigene Ausnahmeklassen schreiben 376
Teil D - Fortgeschrittenes C# 379
16 Werttypen und Verweistypen 381Zwischen C++ und Smalltalk 382
Das Wertemodell 382Das Verweismodell 383Umsetzung in C++ und Smalltalk 383
DerC#-Weg 384Speicherreservierung und Lebensdauer 385Objekte kopieren 393Objekte vergleichen 399Boxing und Unboxing 409Wert- und Referenzparameter 410
Inhaltsverzeichnis
Nullfhigkeit 411Nullable 412
Zusammenfassung 413
17 Namespaces, Gltigkeitsbereiche und Zugriffsschutz 415Namespaces 416
Namespaces definieren 416Namespaces erweitern 417Typen aus Namespaces verwenden 418using-Direktive 418using-Aliase 420Konfliktlsung mit Namespaces 422
Gltigkeitsbereiche 423bersicht 423Verdeckung 423Auflsung der Verdeckung 424
Zugriffsmodifizierer im berblick 425
18 Delegaten und Ereignisse 427Delegaten 428
Definition 428Instanziierung 429Aufruf 432Delegaten als Methoden-Hooks 432Delegaten mit Aufruflisten 434
Ereignisse 436Das Prinzip 436Ereignisse verffentlichen 437Ereignisse abonnieren 440Ereignis-Argumente 441
19 Attribute 445Vordefinierte Attribute 446Benutzerdefinierte Attribute 448
Benutzerdefinierte Attribut-Klasse erstellen 448Komponente erstellen, die mit der Attribut-Klasse arbeitet 449Attribut-Klasse verwenden 451
20 C#-Generika 453Einfhrung in Generika 454Generische Typen 458
Generische Klassen 459Generische Strukturen 462
Inhaltsverzeichnis 13
Generische Schnittstellen 462Generische Delegaten und Prdikate 463Kovarianz und Kontravarianz 465
Generische Methoden 467Aufruf 467Swap 468
Einschrnkungen fr Typparameter 469Ungebundene Typen 469Einschrnkungen 470Vererbung 473
Null, default und die Problematik der Werttypen 473Das Problem der Standardwerte 474Das Problem der Leere 475
Ein Blick hinter die Kulissen 477Typisierung mit Werttypen 478Typisierung mit Verweistypen 479
21 XML-basierte Dokumentierung 481Einfhrung 482XML-Dokumentationskommentare 483
Die empfohlenen Tags 484Eigene Tags definieren 487Beispiele 487
XML-Dokument erzeugen 490Lesbare Dokumentationsseiten 490
Transformation mit ndoc 490Transformation mit eigenem XSLT-Code 490
Teil E - Wichtige .NET-Klassen 499
22 Strings und regulre Ausdrcke 501String-Erzeugung 502String-Llterale 503
Escapesequenzen [email protected] 503Zei