© APSIS GmbH , Polling, 2001
Inhaltsverzeichnis.
II
Vorwort. IX
Danksagungen.
XI
1. Einführung. 1
1.1. Der Übersetzer. 1
1.1.1. Kommandozeilenoptionen.
1
1.1.2. Dokumentation.
4
1.2. Syntax 4
1.2.1. Elemente der Sprache.
4
1.2.2. Die Schlüsselwörter.
5
1.2.3. Literale. 5
1.2.4.
Andere Zeichen 6
1.2.5. Bezeichner.
6
1.2.6. Übersetzungseinheiten.
6
1.2.7. Bedingte Übersetzung.
7
1.3. Das Laufzeitsystem.
8
1.3.1. Die Zwischensprache und die Metadaten.
8
1.3.2. Der JIT-Compiler.
10
1.3.3. Die gemeinsame Sprachspezifikation
10
1.4. Dokumentation.
11
1.4.1.
Äußere Dokumentation. 12
1.4.2.
Innere Dokumentation. 14
2. Klassische Sprachelemente.
16
2.1. Datentypen.
16
2.1.1. Ganzzahltypen.
16
2.1.2. Bruchtypen.
17
2.1.3. Standardklassen für Datentypen. 17
2.1.4. Literale 18
2.1.5. Operatoren.
18
2.1.6. Ausdrücke.
20
2.1.7. Sonderwerte.
21
2.1.8. Vorbesetzung.
22
2.1.9. Konvertierungen. 22
2.1.10. Konstanten.
24
2.1.11. Zusammenfassung der Datentypen. 24
2.2. Klassen und Methoden
25
2.2.1. Variablen und Anweisungen. 26
2.2.2. Übersetzung.
27
2.2.3. Hauptprogramme 27
2.2.4. Funktionen.
28
2.2.5. Ausnahmen.
29
2.2.6. Parameter.
30
2.2.7. Statische Schachtelung von Klassen
32
2.2.8. Blöcke 33
2.2.9. Geschützte Blöcke
34
2.2.10. Benutzung von Blöcken
35
2.2.11. Unsichere Methoden.
36
2.2.12. Weitere Anweisungen.
36
2.3. Steuerstrukturen.
37
2.3.1. Alternativen.
38
2.3.2. Fallunterscheidungen.
38
2.3.3. case mit enum
39
2.3.4. case mit string.
39
2.3.5. Zählschleifen.
40
2.3.6. Bedingungsgesteuerte Schleifen 41
2.3.7. Sprünge 42
2.3.8. Ausnahmebehandlung.
43
2.3.9. Rekursion.
45
2.4. Reihungen 47
2.4.1. Eindimensionale Reihungen. 47
2.4.2. Mehrdimensionale Reihungen. 48
2.4.3. Abarbeitung von Reihungen. 48
2.4.4. Kommandozeilenparameter.
49
2.4.5. Reihungen als Klassenobjekte. 50
2.5. Sichtbarkeit und Lebensdauer. 51
2.5.1. Sichtbarkeit.
51
2.5.2. Lebensdauer.
52
2.5.3. Sichtbarkeitsstufen
54
3. Objektorientierte Sprachelemente. 56
3.1. Klassen und Strukturen
56
3.1.1. Stapel- und Haldenobjekte. 56
3.1.2. Eingebettete und referierte Objekte
57
3.1.3. Elemente von Klassen
58
3.2. Ausprägung 59
3.2.1. Konstruktoren.
59
3.2.2. Objektkonstruktoren.
59
3.2.3. Klassenkonstruktoren.
60
3.2.4. Destruktoren.
61
3.3. Die Vererbungshierarchie.
62
3.3.1. Vererbung.
62
3.3.2. Überschreiben von Methoden. 63
3.3.3. Aufwärtskompatibilität von Referenzen.
64
3.3.4. Aufwärtskompatibilität bei Reihungen.
67
3.3.5.
Unspezifische Ausnahmebehandlung.
68
3.3.6. Erzwungene Abwärtskompatibilität. 68
3.3.7. Typschwäche.
71
3.3.8. Polymorphie.
72
3.3.9. Abstrakte Klassen und Schnittstellen.
74
3.3.10. Explizite Implementierung von Schnittstellen.
76
3.4. Namensräume und Bibliotheken. 77
3.4.1.
Import 78
3.4.2.
Export. 79
4. C#-spezifische
Sprachelemente. 80
4.1. Eigenschaften.
80
4.1.1.
Eigenschaft als öffentliche Variable
80
4.1.2.
Polymorphe Eigenschaften. 82
4.1.3.
Intelligente Zuweisung. 84
4.2. Operatoren 84
4.2.1.
Syntax von Operatoren. 84
4.2.2.
Vereinbarung von Operatormethoden 86
4.2.3.
Überladbare Operatoren.
87
4.3. Indizierungen.
88
4.3.1.
Syntax der Indizierung. 88
4.3.2.
Verwendung der Indizierung.
89
4.3.3.
Indizierte Eigenschaften. 91
4.4.
Benutzerdefinierte Konvertierungen.
92
4.5. Delegate.
95
4.5.1.
Syntax von Delegaten. 95
4.5.2.
Integral 96
4.5.3.
Rückruf 98
4.5.4.
Iterator 99
4.5.5.
Verkettung von Delegaten. 101
4.6.
Ereignisse. 102
4.6.1.
Delegate als Ereignisse. 102
4.6.2.
Standard-Ereignisbehandlung.
103
4.6.3.
Ereignisse als event.
103
4.7. Versionen.
104
4.8. Attribute.
106
4.8.1.
Vordefinierte Attribute. 106
4.8.2.
Attribute aus Standardbibliotheken.
108
4.8.3.
Definition von Attributen.
109
4.8.4.
Lesen von Attributen. 110
5. Benutzung von Standardklassen aus .NET-Bibliotheken
111
5.1. Zeichenketten.
111
5.1.1.
String 112
5.1.2.
StringBuilder. 113
5.1.3.
Formatierung. 115
5.1.4.
Benutzerdefinierte Formatierungen. 119
5.1.5.
Reguläre Ausdrücke. 121
5.2. Kultur 123
5.3. Behälter.
124
5.3.1.
Die Hierarchie von Behältern.
124
5.3.2.
Überblick über die Behälterklassen.
125
5.3.3.
Aufzähler. 126
5.4. Ströme.
127
5.4.1.
Arten von Strömen. 128
5.4.2.
Überblick über die Stromklassen.
129
5.4.3.
Konstruktion von Behälterströmen 131
5.4.4.
Verkettung von Strömen. 132
5.4.5.
Operationen in den Stromklassen.
133
5.4.6.
Polymorphe Ströme. 135
5.4.7.
Serialisierung. 136
5.5. Nebenläufige Vorgänge
137
5.5.1. Einfache Vorgänge.
138
5.5.2. Erzeuger und Verbraucher. 139
5.5.3. Synchronisierung 140
5.5.4. Unterbrechungen 141
5.5.5. Weitere Synchronisierungsoperationen
142
5.6. Quelltextinformation zur Laufzeit. 142
5.6.1. Methoden finden 142
5.6.2. Datenkomponenten finden
144
5.6.3. Weitere Beispiele.
147
5.7. Sicherheitsmechanismen
147
5.7.1. Rechte eines Programms.
147
5.7.2. Programmidentität
149
5.7.3. Rechte eines Benutzers.
150
5.7.4. Beispiel.
150
6. Entwurfs- und Programmiertechniken. 153
6.1. Entwurf von Schnittstellen. 153
6.1.1.
Basisfunktionalität 153
6.1.2. Der Elementtyp.
154
6.1.3. Informatoren und Mutatoren. 155
6.1.4. Verhalten im Extremfall.
156
6.1.5. Lesbare Eigenschaften.
158
6.1.6. Operatoren.
158
6.1.7. Zusicherungen.
159
6.1.8. Die Schnittstelle des Stapels 160
6.1.9. Die Schnittstelle der Warteschlange.
161
6.1.10. Schnittstellenhierarchie. 161
6.2. Kapazitätsbestimmung.
162
6.3. Implementierung als Reihung. 163
6.3.1. Reihung mit Konstruktorparameter. 163
6.3.2. Flexible Reihung.
165
6.3.3.
Warteschlange als Reihung.
166
6.4. Implementierung als verkettete Liste.
169
6.4.1. Rückwärts verkettete Listen 169
6.4.2. Vorwärts verkettete Liste. 170
6.5. Implementierung mit Import. 172
6.5.1. Erben 172
6.5.2. Erwerben.
173
6.5.3. Klassenhierarchie
174
6.6. Generische Behälter.
174
6.6.1. Elementtypabhängige Klassen. 174
6.6.2. Generizität in C++
175
6.6.3. Laufzeitgenerizität
176
6.6.4. Mehrfachvererbung.
177
6.7. Iterative Methoden 179
6.7.1. Gleichheiten.
180
6.7.2.
Logische Gleichheit von Reihungen.
182
6.7.3. Logische Gleichheit von verketteten Listen
184
6.7.4.
Statische Gleichheitsmethoden.
185
6.7.5. Kopieroperationen
186
6.7.6. Kopieren einer Liste.
188
6.7.7. Kopierkonstruktoren.
190
6.7.8. Rekursive Implementierung 190
6.7.9. Persistenzmethoden.
193
6.7.10. Konkatenation.
195
6.7.11. Operatoren.
196
6.7.12. Rückruf 197
6.7.13. Schnittstellen für die iterativen Methoden.
197
6.7.14. Hierarchie mit den iterativen Methoden.
199
6.8. Entwurfsmuster.
199
6.8.1. Die Entwurfsmuster Schablonenmethode.
199
6.8.2. Implementierung der Schablonenmethoden.
202
6.8.3. Kompatibilität unterschiedlicher Klassen
203
6.8.4. Vertrauen zu Erben.
204
6.8.5. Die Entwurfsmuster Fassade 205
6.8.6. Die Entwurfsmuster Fabrikmethode. 207
6.9. Zusammenfassung.
208
6.9.1. Entwurfstechniken.
208
6.9.2. Implementierungstechniken 209
7. Windows-Programmierung.
210
7.1. Windows-Anwendungen.
210
7.2. Fenster.
211
7.2.1.
Mausereignisse. 212
7.2.2.
Zeichnen. 213
7.2.3.
Menüs 214
7.2.4.
Selbstdefinierte Ereignisse.
215
7.2.5.
Dialogfenster. 216
7.2.6.
Fensterelemente 217
7.2.7.
Ereignisse aus Steuerelementen 221
7.3.
Generatoren. 223
7.4. Grafik 224
7.4.1. GDI-Behälter.
225
7.4.2. Stifte und Pinsel.
225
7.4.3. Rechtecke.
226
7.4.4. Schriftarten.
226
7.4.5. Beispiel für einen Stift. 227
7.4.6. Beispiel für einen Pinsel 228
7.4.7. Linien und Texte 230
8. Sprachübergreifende Kommunikation. 232
8.1. Komponenten in C#
232
8.2. Komponenten in anderen Sprachen 232
8.3. Kunden in C#
233
8.4. Kunden in anderen Sprachen 234
8.5. Kunden in HTML 234
8.6. Externe Funktionen aufrufen. 235
9. Die Bibliotheken der Plattform .NET. 236
9.1. Die Bibliothek System.
236
9.1.1. Object
236
9.1.2. Schnittstellen.
237
9.1.3. Wertetypen.
237
9.1.4. Weitere Typen 239
9.1.5.
Delegate. 239
9.1.6.
Ausnahmeklassen 239
9.1.7.
Attributklassen. 241
9.1.8. Die Klasse Console 242
9.1.9. Weitere
selbständige Klassen. 242
9.2. Unterbibliotheken im System. 244
9.2.1.
Dienstklassen für den Alltagsgebrauch.
245
9.2.2.
Benutzeroberflächen. 246
9.2.3.
Laufzeit- und Betriebssystem. 247
9.2.4.
Verteilte Programme. 249
9.2.5.
Compilerbau. 250
9.3. Firmenspezifische Bibliotheken. 250
10. Eine Grammatik für C#.
251
10.1. Die Notation 251
10.2. Die Regeln 251
10.2.1. Logische Reihenfolge.
251
10.2.2. Alphabetische Reihenfolge. 256
Literaturverzeichnis.
261
Programmverzeichnis.
262
Wörterbuch 265
Englisch-deutsch. 265
Deutsch-englisch.
267
Sachwortverzeichnis.
270
© APSIS GmbH , Polling, 2001